Skip to content

Commit 4423a24

Browse files
refactoring grid page
1 parent bc811c4 commit 4423a24

File tree

1 file changed

+55
-51
lines changed

1 file changed

+55
-51
lines changed

lib/features/grid/view/grid_page.dart renamed to lib/features/searching/view/grid_page.dart

Lines changed: 55 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import 'package:algorithm_visualizer/core/resources/color_manager.dart';
22
import 'package:algorithm_visualizer/core/resources/strings_manager.dart';
3+
import 'package:algorithm_visualizer/core/resources/theme_manager.dart';
34
import 'package:algorithm_visualizer/core/widgets/adaptive/text/adaptive_text.dart';
5+
import 'package:algorithm_visualizer/core/widgets/custom_widgets/custom_dialog.dart';
46
import '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';
68
import 'package:flutter/material.dart';
79
import 'package:flutter_riverpod/flutter_riverpod.dart';
810
import 'package:flutter_screenutil/flutter_screenutil.dart';
911
part '../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

1517
BorderSide _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 {
165169
class _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

Comments
 (0)