Skip to content

Commit

Permalink
Merge pull request #201 from Maheen-Ilyas/functions
Browse files Browse the repository at this point in the history
Common functions in the AppFunctions class
  • Loading branch information
sapatevaibhav authored Jul 19, 2024
2 parents 80286ee + 592fc12 commit 2a20ffb
Show file tree
Hide file tree
Showing 12 changed files with 213 additions and 224 deletions.
322 changes: 171 additions & 151 deletions lib/pages/explore/explore.dart
Original file line number Diff line number Diff line change
@@ -1,175 +1,195 @@
// ignore_for_file: unused_import

import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:learn/pages/modules/atoz.dart';
import 'package:learn/pages/modules/birds.dart';
import 'package:learn/pages/modules/colours.dart';
import 'package:learn/pages/modules/planets.dart';
import 'package:learn/pages/modules/shapes.dart';
import 'package:learn/utils/constants.dart';
import 'package:learn/utils/const_dimensions.dart';
import 'package:learn/utils/route/route_constant.dart';

import '../../utils/const_dimensions.dart';


// Explore Page
class ExplorePage extends StatefulWidget {
class ExplorePage extends StatelessWidget {
const ExplorePage({super.key});

@override
State<ExplorePage> createState() => _ExplorePageState();
}

class _ExplorePageState extends State<ExplorePage> {
bool _isLoading = true;

@override
void initState() {
super.initState();
_loadPrefs();
}

Future<void> _loadPrefs() async {
await Provider.of<FavouriteScreenProvider>(context, listen: false)
.loadFromPrefs();
setState(() {
_isLoading = false;
});
}

@override
Widget build(BuildContext context) {
final themeProvider = Provider.of<ThemeProvider>(context);
final provider =
Provider.of<FavouriteScreenProvider>(context, listen: false);
List<int> selectItem = provider.selectedItemList;
return _isLoading
? Center(child: CircularProgressIndicator())
: Scaffold(
appBar: AppBar(
title: const Text(
'Explore',
style: TextStyle(fontWeight: FontWeight.bold),
return SafeArea(
child: CustomScrollView(
slivers: [
SliverAppBar(
title: Padding(
padding: const EdgeInsets.fromLTRB(0, 12, 16, 4),
child: Text(
"Explore",
style: Theme.of(context)
.textTheme
.headlineLarge!
.copyWith(fontWeight: FontWeight.bold, fontSize: 30.0),
),

),
child: ClipRRect(
borderRadius: BorderRadius.circular(16),
child: Stack(
fit: StackFit.expand,
alignment: Alignment.center,
children: [
ImageFiltered(
imageFilter: ImageFilter.blur(
sigmaX: 5, sigmaY: 5),
child: Image.asset(
AppConstants
.modules[index].thumbnailPath,
fit: BoxFit.cover,
),
),
Positioned.fill(
child: Align(
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
Text(
AppConstants.modules[index].name,
style: Theme.of(context)
.textTheme
.headlineMedium!
.copyWith(
color: Colors.white,
fontWeight: FontWeight.bold,
shadows: [
const Shadow(
color: Colors.black,
offset: Offset(2, 1),
blurRadius: 4,
),
],
),
),
Text(
AppConstants
.modules[index].description,
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(
color: Colors.white,
fontWeight: FontWeight.bold,
shadows: [
const Shadow(
color: Colors.black,
offset: Offset(2, 1),
blurRadius: 2,
),
],
),
),
],
),
),
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) {
return GestureDetector(
onTap: () => Navigator.push(
context,
AppConstants.modules[index].route,
),
child: Container(
margin: const EdgeInsets.symmetric(
horizontal: 24, vertical: 12),
height: ConstantDimensions.heightExtraLarge * 4,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
spreadRadius: 2,
blurRadius: 5,
offset: const Offset(0, 3),
),
],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(16),
child: Stack(
fit: StackFit.expand,
alignment: Alignment.center,
children: [
ImageFiltered(
imageFilter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),
child: Image.asset(
AppConstants.modules[index].thumbnailPath,
fit: BoxFit.cover,
),
),
Positioned.fill(
child: Align(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
AppConstants.modules[index].name,
style: Theme.of(context)
.textTheme
.headlineMedium!
.copyWith(
color: Colors.white,
fontWeight: FontWeight.bold,
shadows: [
const Shadow(
color: Colors.black,
offset: Offset(2, 1),
blurRadius: 4,
),
),
],
),
Row(
crossAxisAlignment:
CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container(
width: 40,
height: 40,
margin: const EdgeInsets.all(5),
decoration: BoxDecoration(
color: Colors.white,
borderRadius:
BorderRadius.circular(10),
),
child:
Consumer<FavouriteScreenProvider>(
builder: (context, item, child) {
return IconButton(
onPressed: () {
if (item.selectedItemList
.contains(index)) {
item.removeList(index);
} else {
print(selectItem);
item.setList(index);
}
},
icon: selectItem.contains(index)
? const Icon(
Icons.favorite,
size: 25,
color: Colors.red,
)
: const Icon(
Icons.favorite_border,
size: 25,
),
);
},
),
),
Text(
AppConstants.modules[index].description,
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(
color: Colors.white,
fontWeight: FontWeight.bold,
shadows: [
const Shadow(
color: Colors.black,
offset: Offset(2, 1),
blurRadius: 2,
),
],
)
],
),
)),
);
},
childCount: AppConstants.modules.length,
),
),
],
),
),
),
],
),
),
),
);
},
childCount: AppConstants.modules.length,
),
),
GestureDetector(
onTap: () {
Navigator.pushNamed(
context,
AllRoutesConstant.drawingboardRoute,
);
},
child: Container(
margin: const EdgeInsets.all(5.0),
padding: const EdgeInsets.all(8.0),
decoration: BoxDecoration(
border: Border.all(color: Colors.black, width: 1.0),
borderRadius: BorderRadius.circular(8.0),
color: Colors.greenAccent,
),
child: Row(
children: [
SizedBox(
width: 50,
height: 50,
child: SvgPicture.asset(
'assets/explore/drawing_board.svg',
),
),
const SizedBox(width: 28.0),
const Text(
'Drawing Board',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 30.0,
fontFamily: 'Comic',
color: Colors.white,
),
),
],
),
),
drawer: const MyDrawer(),
);
),
],
),
);
}
}

// GestureDetector(
// onTap: () {
// Navigator.pushNamed(context, '/quiz');
// },
// child: Container(
// margin: const EdgeInsets.all(5.0),
// padding: const EdgeInsets.all(8.0),
// decoration: BoxDecoration(
// border: Border.all(color: Colors.black, width: 1.0),
// borderRadius: BorderRadius.circular(8.0),
// color: Colors.blueAccent,
// ),
// child: Row(
// children: [
// SizedBox(
// width: 50,
// height: 50,
// child: SvgPicture.asset('assets/explore/notebook.svg'),
// ),
// const SizedBox(width: 28.0),
// const Text(
// 'Quiz',
// style: TextStyle(
// fontWeight: FontWeight.bold,
// fontSize: 30.0,
// fontFamily: 'Comic',
// color: Colors.white,
// ),
// ),
// ],
// ),
// ),
// ),
8 changes: 2 additions & 6 deletions lib/pages/fruits.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter_tts/flutter_tts.dart';
import 'package:just_audio/just_audio.dart';
import 'package:learn/utils/constants.dart';
import 'package:learn/utils/functions.dart';

import '../utils/const_dimensions.dart';

Expand Down Expand Up @@ -91,7 +92,7 @@ class _FruitsPageState extends State<FruitsPage> {
const SizedBox(height: ConstantDimensions.heightMedium),
IconButton.outlined(
onPressed: () {
readName(
AppFunctions().readName(
AppConstants.Fruits[_currentIndex].name,
);
},
Expand Down Expand Up @@ -156,11 +157,6 @@ class _FruitsPageState extends State<FruitsPage> {
);
}

Future<void> readName(String name) async {
await flutterTts.setLanguage("EN-IN");
await flutterTts.speak(name);
}

void _navigateToNextBird() {
setState(() {
_currentIndex = (_currentIndex + 1) % AppConstants.Fruits.length;
Expand Down
Loading

0 comments on commit 2a20ffb

Please sign in to comment.