Skip to content

Commit 1758dd3

Browse files
handle view with large screen
1 parent e0ee474 commit 1758dd3

File tree

5 files changed

+51
-27
lines changed

5 files changed

+51
-27
lines changed

lib/core/helpers/current_device.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,9 @@ extension CurrentDevice on BuildContext {
55
final ThemeData theme = Theme.of(this);
66
return theme.platform == TargetPlatform.android;
77
}
8+
9+
bool get isIOS {
10+
final ThemeData theme = Theme.of(this);
11+
return theme.platform == TargetPlatform.iOS;
12+
}
813
}

lib/features/searching/view/grid_page.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,18 @@ class SearchingPage extends StatelessWidget {
4646
}
4747
}
4848

49-
class _ControlButtons extends StatelessWidget {
49+
class _ControlButtons extends StatefulWidget {
5050
const _ControlButtons();
5151

52+
@override
53+
State<_ControlButtons> createState() => _ControlButtonsState();
54+
}
55+
56+
class _ControlButtonsState extends State<_ControlButtons> {
5257
PopupMenuItem<String> buildPopupMenuItem(String value, [ThemeEnum? color]) {
53-
return PopupMenuItem(value: value, child: RegularText(value, fontSize: 12, color: color));
58+
final isLargeScreen = MediaQuery.sizeOf(context).width > 500;
59+
return PopupMenuItem(
60+
value: value, child: RegularText(value, fontSize: isLargeScreen ? 16 : 14, color: color));
5461
}
5562

5663
@override

lib/features/sorting/base/view/sorting_list_page.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class SortingListPage extends StatelessWidget {
1919
body: const SafeArea(
2020
child: Center(
2121
child: Column(
22-
mainAxisAlignment: MainAxisAlignment.center,
22+
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
2323
children: [
2424
_CustomButton(text: StringsManager.bubbleSort, route: Routes.bubbleSort),
2525
_CustomButton(text: StringsManager.insertionSort, route: Routes.insertionSort),

lib/features/sorting/base/view/sorting_page.dart

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -58,28 +58,32 @@ class _BuildBody extends StatelessWidget {
5858
@override
5959
Widget build(BuildContext context) {
6060
return SafeArea(
61-
child: Stack(
62-
alignment: AlignmentDirectional.bottomCenter,
61+
child: Column(
62+
mainAxisAlignment: MainAxisAlignment.spaceBetween,
6363
children: [
6464
Align(alignment: AlignmentDirectional.topCenter, child: ShowUpSortingList(instance)),
65-
Align(
66-
alignment: AlignmentDirectional.bottomCenter,
67-
child: Column(
68-
mainAxisAlignment: MainAxisAlignment.end,
69-
spacing: 10,
70-
children: [
71-
_SortingControlButtons(instance),
72-
SymmetricPadding(
73-
horizontal: 15,
74-
child: Row(
75-
mainAxisAlignment: MainAxisAlignment.spaceBetween,
76-
children: [
77-
_SpeedDraggable(instance: instance),
78-
_SizeDraggable(instance: instance),
79-
],
65+
Flexible(
66+
child: Align(
67+
alignment: AlignmentDirectional.bottomCenter,
68+
child: Column(
69+
mainAxisAlignment: MainAxisAlignment.end,
70+
spacing: 10,
71+
children: [
72+
Flexible(child: _SortingControlButtons(instance)),
73+
Flexible(
74+
child: SymmetricPadding(
75+
horizontal: 15,
76+
child: Row(
77+
mainAxisAlignment: MainAxisAlignment.spaceBetween,
78+
children: [
79+
_SpeedDraggable(instance: instance),
80+
_SizeDraggable(instance: instance),
81+
],
82+
),
83+
),
8084
),
81-
),
82-
],
85+
],
86+
),
8387
),
8488
),
8589
],
@@ -96,11 +100,12 @@ class ShowUpSortingList extends ConsumerWidget {
96100
Widget build(BuildContext context, ref) {
97101
final items = ref.watch(instance.select((state) => state.list));
98102
final speedDuration = ref.watch(instance.select((state) => state.swipeDuration));
103+
final maxHeight = SortingNotifier.calculateMaxListItemHeight(context);
99104

100105
return Padding(
101106
padding: const EdgeInsets.only(top: 5),
102107
child: RSizedBox(
103-
height: selectedAlgorithmLength == 1 ? SortingNotifier.maxListItemHeight * 1.05 : null,
108+
height: selectedAlgorithmLength == 1 ? maxHeight*1.01 : null,
104109
width: double.infinity,
105110
child: Stack(
106111
alignment: AlignmentDirectional.bottomCenter,
@@ -156,7 +161,7 @@ class _BuildItem extends ConsumerWidget {
156161
padding: EdgeInsets.symmetric(horizontal: SortingNotifier.itemsPadding / 2),
157162
child: AnimatedContainer(
158163
duration: speedDuration,
159-
height: SortingNotifier.calculateItemHeight(item.value, size) / selectedAlgorithmLength,
164+
height: SortingNotifier.calculateItemHeight(context, item.value, size) / selectedAlgorithmLength,
160165
width: itemWidth,
161166
decoration: BoxDecoration(
162167
color: context.getColor(currentItem?.getColor ?? SortingNotifier.itemColor),

lib/features/sorting/base/view_model/sorting_notifier.dart

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ abstract class SortingNotifier extends StateNotifier<SortingNotifierState> {
1515
_initializePositions();
1616
}
1717

18-
static double maxListItemHeight = 250.r;
18+
// static double maxListItemHeight = 250.r;
1919
static double itemsPadding = 1.w;
2020
static const ThemeEnum swappingColor = ThemeEnum.redColor;
2121
static const ThemeEnum comparedColor = ThemeEnum.lightBlueColor;
@@ -44,8 +44,15 @@ abstract class SortingNotifier extends StateNotifier<SortingNotifierState> {
4444
return availableWidth / size > 0 ? availableWidth / size : 1.0;
4545
}
4646

47-
static double calculateItemHeight(int itemIndex, int size) {
48-
final value = (maxListItemHeight / size) * (itemIndex + 1);
47+
static double calculateMaxListItemHeight(BuildContext context) {
48+
final screenHeight = MediaQuery.of(context).size.height * 0.65;
49+
50+
// Ensure a positive width
51+
return screenHeight > 0 ? screenHeight : 1.0;
52+
}
53+
54+
static double calculateItemHeight(BuildContext context, int itemIndex, int size) {
55+
final value = (calculateMaxListItemHeight(context) / size) * (itemIndex + 1);
4956
return value.h;
5057
}
5158

0 commit comments

Comments
 (0)