11import 'package:algorithm_visualizer/core/resources/color_manager.dart' ;
22import 'package:algorithm_visualizer/core/resources/strings_manager.dart' ;
3+ import 'package:algorithm_visualizer/core/resources/theme_manager.dart' ;
34import 'package:algorithm_visualizer/core/widgets/adaptive/text/adaptive_text.dart' ;
5+ import 'package:algorithm_visualizer/core/widgets/custom_widgets/custom_dialog.dart' ;
46import 'package:algorithm_visualizer/core/widgets/custom_widgets/custom_icon.dart' ;
5- import 'package:algorithm_visualizer/features/grid /view_model/grid_notifier.dart' ;
7+ import 'package:algorithm_visualizer/features/searching /view_model/grid_notifier.dart' ;
68import 'package:flutter/material.dart' ;
79import 'package:flutter_riverpod/flutter_riverpod.dart' ;
810import 'package:flutter_screenutil/flutter_screenutil.dart' ;
911part '../widgets/searcher_grid.dart' ;
1012
11- final gridNotifierProvider = StateNotifierProvider <GridNotifierCubit , GridNotifierState >(
12- (ref) => GridNotifierCubit (),
13+ final _gridNotifierProvider = StateNotifierProvider <SearchingNotifier , GridNotifierState >(
14+ (ref) => SearchingNotifier (),
1315);
1416
1517BorderSide _borderSide ([bool isWhite = false ]) =>
@@ -24,8 +26,8 @@ BorderDirectional _thineVerticalBorder() => BorderDirectional(
2426 bottom: _borderSide (true ),
2527 );
2628
27- class GridPage extends StatelessWidget {
28- const GridPage ({super .key});
29+ class SearchingPage extends StatelessWidget {
30+ const SearchingPage ({super .key});
2931
3032 @override
3133 Widget build (BuildContext context) {
@@ -36,42 +38,44 @@ class GridPage extends StatelessWidget {
3638 builder: (context, ref, _) {
3739 return TextButton (
3840 onPressed: () {
39- ref.read (gridNotifierProvider.notifier).generateMaze ();
41+ CustomAlertDialog (context).solidDialog (
42+ parameters: [
43+ ListDialogParameters (
44+ text: StringsManager .generateMaze,
45+ onTap: () {
46+ ref.read (_gridNotifierProvider.notifier).generateMaze ();
47+ },
48+ ),
49+ ListDialogParameters (
50+ text: "Dijkstra" ,
51+ onTap: () {
52+ ref.read (_gridNotifierProvider.notifier).performDijkstra ();
53+ },
54+ ),
55+ ListDialogParameters (
56+ text: "BFS" ,
57+ onTap: () {
58+ ref.read (_gridNotifierProvider.notifier).performBFS ();
59+ },
60+ ),
61+ ListDialogParameters (
62+ text: StringsManager .clearPath,
63+ color: ThemeEnum .redColor,
64+ onTap: () {
65+ ref.read (_gridNotifierProvider.notifier).clearTheGrid (keepWall: true );
66+ },
67+ ),
68+ ListDialogParameters (
69+ text: StringsManager .clearAll,
70+ color: ThemeEnum .redColor,
71+ onTap: () {
72+ ref.read (_gridNotifierProvider.notifier).clearTheGrid ();
73+ },
74+ ),
75+ ],
76+ );
4077 },
41- child: const RegularText (StringsManager .generateMaze),
42- );
43- },
44- ),
45- Consumer (
46- builder: (context, ref, _) {
47- return TextButton (
48- onPressed: () {
49- ref.read (gridNotifierProvider.notifier).performDijkstra ();
50- },
51- child: const RegularText ("Dijkstra" ),
52- );
53- },
54- ),
55- Consumer (
56- builder: (context, ref, _) {
57- return TextButton (
58- onPressed: () {
59- ref.read (gridNotifierProvider.notifier).performBFS ();
60- },
61- child: const RegularText ("BFS" ),
62- );
63- },
64- ),
65- Consumer (
66- builder: (context, ref, _) {
67- return TextButton (
68- onLongPress: () {
69- ref.read (gridNotifierProvider.notifier).clearTheGrid (keepWall: true );
70- },
71- onPressed: () {
72- ref.read (gridNotifierProvider.notifier).clearTheGrid ();
73- },
74- child: const RegularText (StringsManager .clear),
78+ child: const CustomIcon (Icons .menu_rounded),
7579 );
7680 },
7781 ),
@@ -112,7 +116,7 @@ class _BuildLayoutState extends ConsumerState<_BuildLayout> {
112116 }
113117
114118 void _updateLayout () {
115- ref.read (gridNotifierProvider .notifier).updateGridLayout (widget.size);
119+ ref.read (_gridNotifierProvider .notifier).updateGridLayout (widget.size);
116120 }
117121
118122 @override
@@ -126,14 +130,14 @@ class _BuildGridItems extends ConsumerWidget {
126130
127131 @override
128132 Widget build (BuildContext context, ref) {
129- final gridCount = ref.watch (gridNotifierProvider .select ((it) => it.gridCount));
130- final watchColumnCrossAxisCount = ref.watch (gridNotifierProvider .select ((it) => it.columnCrossAxisCount));
133+ final gridCount = ref.watch (_gridNotifierProvider .select ((it) => it.gridCount));
134+ final watchColumnCrossAxisCount = ref.watch (_gridNotifierProvider .select ((it) => it.columnCrossAxisCount));
131135
132136 if (gridCount == 0 ) {
133137 return const Center (child: MediumText (StringsManager .notInitializeGridYet));
134138 }
135139
136- final read = ref.read (gridNotifierProvider .notifier);
140+ final read = ref.read (_gridNotifierProvider .notifier);
137141
138142 return Listener (
139143 onPointerDown: read.onPointerDownOnGrid,
@@ -165,7 +169,7 @@ class _Square extends ConsumerStatefulWidget {
165169class _SquareState extends ConsumerState <_Square > {
166170 @override
167171 Widget build (BuildContext context) {
168- final isSelected = ref.watch (gridNotifierProvider .select ((it) => it.gridData[widget.index]));
172+ final isSelected = ref.watch (_gridNotifierProvider .select ((it) => it.gridData[widget.index]));
169173
170174 final isColored = isSelected != GridStatus .empty;
171175 final showBorder = isSelected != GridStatus .empty &&
@@ -178,7 +182,7 @@ class _SquareState extends ConsumerState<_Square> {
178182 ),
179183 child: AnimatedScale (
180184 scale: isColored ? 1.0 : 0.1 ,
181- duration: GridNotifierCubit .scaleAppearDurationForWall,
185+ duration: SearchingNotifier .scaleAppearDurationForWall,
182186 curve: Curves .elasticOut,
183187 child: Builder (
184188 builder: (context) {
@@ -210,7 +214,7 @@ class _PathGrid extends StatelessWidget {
210214 Widget build (BuildContext context) {
211215 return Consumer (
212216 builder: (context, ref, _) {
213- final size = ref.watch (gridNotifierProvider .select ((it) => it.gridSize));
217+ final size = ref.watch (_gridNotifierProvider .select ((it) => it.gridSize));
214218
215219 return Container (
216220 width: size,
@@ -229,7 +233,7 @@ class _WallGrid extends StatelessWidget {
229233 Widget build (BuildContext context) {
230234 return Consumer (
231235 builder: (context, ref, _) {
232- final size = ref.watch (gridNotifierProvider .select ((it) => it.gridSize));
236+ final size = ref.watch (_gridNotifierProvider .select ((it) => it.gridSize));
233237
234238 return Container (
235239 width: size,
@@ -248,7 +252,7 @@ class _StartPointGrid extends StatelessWidget {
248252 Widget build (BuildContext context) {
249253 return Consumer (
250254 builder: (context, ref, _) {
251- final size = ref.watch (gridNotifierProvider .select ((it) => it.gridSize));
255+ final size = ref.watch (_gridNotifierProvider .select ((it) => it.gridSize));
252256
253257 return Container (
254258 width: size,
@@ -274,7 +278,7 @@ class _TargetPointGrid extends StatelessWidget {
274278 Widget build (BuildContext context) {
275279 return Consumer (
276280 builder: (context, ref, _) {
277- final size = ref.watch (gridNotifierProvider .select ((it) => it.gridSize));
281+ final size = ref.watch (_gridNotifierProvider .select ((it) => it.gridSize));
278282
279283 return Container (
280284 width: size,
@@ -323,7 +327,7 @@ class _DefaultGrid extends StatelessWidget {
323327 Widget build (BuildContext context) {
324328 return Consumer (
325329 builder: (context, ref, _) {
326- final size = ref.watch (gridNotifierProvider .select ((it) => it.gridSize));
330+ final size = ref.watch (_gridNotifierProvider .select ((it) => it.gridSize));
327331
328332 return Container (
329333 width: size,
0 commit comments