Skip to content
This repository was archived by the owner on May 14, 2023. It is now read-only.

Commit 3d652bf

Browse files
committed
Added breakpoints
1 parent da76807 commit 3d652bf

File tree

10 files changed

+214
-144
lines changed

10 files changed

+214
-144
lines changed

adaptive_breakpoints/example/lib/main.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,9 @@ class _MyHomePageState extends State<MyHomePage> {
4646
child: Column(
4747
mainAxisAlignment: MainAxisAlignment.center,
4848
children: <Widget>[
49-
Text(
50-
'$xs $s $m $l',
51-
),
49+
Row(),
50+
Wrap(),
5251
],
53-
5452
),
5553
),
5654
floatingActionButton: FloatingActionButton(

adaptive_breakpoints/example/test/widget_test.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
import 'package:flutter/material.dart';
99
import 'package:flutter_test/flutter_test.dart';
1010

11-
import 'package:example/main.dart';
12-
1311
void main() {
1412
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
1513
// Build our app and trigger a frame.
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
library adaptive_breakpoints;
22

3-
export 'src/breakpoints.dart';
3+
export 'src/adaptive_breakpoints.dart';
4+
export 'src/adaptive_widget.dart';

adaptive_breakpoints/lib/main.dart

Lines changed: 0 additions & 113 deletions
This file was deleted.
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
import 'package:flutter/material.dart';
2+
3+
enum AdaptiveWindow {
4+
xs,
5+
s,
6+
m,
7+
l,
8+
xl,
9+
}
10+
11+
extension AdaptiveWindowExtension on AdaptiveWindow {
12+
String get name {
13+
switch (this) {
14+
case AdaptiveWindow.xs:
15+
return 'xsmall';
16+
break;
17+
case AdaptiveWindow.s:
18+
return 'small';
19+
break;
20+
case AdaptiveWindow.m:
21+
return 'medium';
22+
break;
23+
case AdaptiveWindow.l:
24+
return 'large';
25+
break;
26+
case AdaptiveWindow.xl:
27+
return 'xlarge';
28+
break;
29+
default:
30+
throw AssertionError('Error');
31+
}
32+
}
33+
}
34+
35+
class BreakPointSystem {
36+
final RangeValues range;
37+
final String portrait;
38+
final String landscape;
39+
final AdaptiveWindow window;
40+
final int columns;
41+
final int margins;
42+
final int gutters;
43+
44+
BreakPointSystem({
45+
Key key,
46+
@required this.range,
47+
this.portrait,
48+
this.landscape,
49+
@required this.window,
50+
@required this.columns,
51+
@required this.margins,
52+
@required this.gutters,
53+
}) : assert(range != null),
54+
assert(window != null),
55+
assert(columns != null),
56+
assert(margins != null),
57+
assert(gutters != null);
58+
}
59+
60+
List<BreakPointSystem> breakpointSystems = [
61+
BreakPointSystem(
62+
range: RangeValues(0, 359),
63+
portrait: 'small handset',
64+
window: AdaptiveWindow.xs,
65+
columns: 4,
66+
margins: 16,
67+
gutters: 16,
68+
),
69+
BreakPointSystem(
70+
range: RangeValues(360, 399),
71+
portrait: 'medium handset',
72+
window: AdaptiveWindow.xs,
73+
columns: 4,
74+
margins: 16,
75+
gutters: 16,
76+
),
77+
BreakPointSystem(
78+
range: RangeValues(400, 479),
79+
portrait: 'large handset',
80+
window: AdaptiveWindow.xs,
81+
columns: 4,
82+
margins: 16,
83+
gutters: 16,
84+
),
85+
BreakPointSystem(
86+
range: RangeValues(480, 599),
87+
portrait: 'large handset',
88+
landscape: 'small handset',
89+
window: AdaptiveWindow.xs,
90+
columns: 4,
91+
margins: 16,
92+
gutters: 16,
93+
),
94+
BreakPointSystem(
95+
range: RangeValues(600, 719),
96+
portrait: 'small tablet',
97+
landscape: 'medium handset',
98+
window: AdaptiveWindow.s,
99+
columns: 8,
100+
margins: 16,
101+
gutters: 16,
102+
),
103+
BreakPointSystem(
104+
range: RangeValues(720, 839),
105+
portrait: 'large tablet',
106+
landscape: 'large handset',
107+
window: AdaptiveWindow.s,
108+
columns: 8,
109+
margins: 24,
110+
gutters: 24,
111+
),
112+
BreakPointSystem(
113+
range: RangeValues(840, 959),
114+
portrait: 'large tablet',
115+
landscape: 'large handset',
116+
window: AdaptiveWindow.s,
117+
columns: 12,
118+
margins: 24,
119+
gutters: 24,
120+
),
121+
BreakPointSystem(
122+
range: RangeValues(960, 1023),
123+
landscape: 'small tablet',
124+
window: AdaptiveWindow.s,
125+
columns: 12,
126+
margins: 24,
127+
gutters: 24,
128+
),
129+
BreakPointSystem(
130+
range: RangeValues(1024, 1279),
131+
landscape: 'large tablet',
132+
window: AdaptiveWindow.m,
133+
columns: 12,
134+
margins: 24,
135+
gutters: 24,
136+
),
137+
BreakPointSystem(
138+
range: RangeValues(1280, 1439),
139+
landscape: 'large tablet',
140+
window: AdaptiveWindow.m,
141+
columns: 12,
142+
margins: 24,
143+
gutters: 24,
144+
),
145+
BreakPointSystem(
146+
range: RangeValues(1440, 1599),
147+
portrait: 'small handset',
148+
window: AdaptiveWindow.l,
149+
columns: 12,
150+
margins: 24,
151+
gutters: 24,
152+
),
153+
BreakPointSystem(
154+
range: RangeValues(1600, 1919),
155+
portrait: 'small handset',
156+
window: AdaptiveWindow.l,
157+
columns: 12,
158+
margins: 24,
159+
gutters: 24,
160+
),
161+
BreakPointSystem(
162+
range: RangeValues(1920, 100000),
163+
portrait: 'small handset',
164+
window: AdaptiveWindow.xl,
165+
columns: 12,
166+
margins: 24,
167+
gutters: 24,
168+
),
169+
];
170+
171+
/// Returns ths Window Size to the user. This is useful when the user wants to
172+
/// compare the MediaQuery to the current window size.
173+
AdaptiveWindow getWindowSize(double width) {
174+
for (BreakPointSystem breakPointSystem in breakpointSystems) {
175+
if (breakPointSystem.range.start <= width && width <= breakPointSystem.range.end) {
176+
return breakPointSystem.window;
177+
}
178+
}
179+
throw AssertionError('WindowSize is too big');
180+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import 'package:flutter/material.dart';
2+
3+
class AdaptiveColumn extends StatelessWidget {
4+
@override
5+
Widget build(BuildContext context) {
6+
return Container(
7+
child: Wrap(
8+
));
9+
}
10+
11+
12+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import 'package:flutter/material.dart';
2+
3+
abstract class AdaptiveWidget extends StatelessWidget {
4+
final List<Widget> children;
5+
6+
AdaptiveWidget({
7+
Key key,
8+
this.children,
9+
});
10+
11+
@override
12+
Widget build(BuildContext context) {
13+
// TODO: implement build
14+
throw UnimplementedError();
15+
}
16+
}

adaptive_breakpoints/lib/src/breakpoints.dart

Lines changed: 0 additions & 4 deletions
This file was deleted.

adaptive_breakpoints/test/widget_test.dart

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,6 @@
88
import 'package:flutter/material.dart';
99
import 'package:flutter_test/flutter_test.dart';
1010

11-
import 'package:adaptive_breakpoints/main.dart';
12-
1311
void main() {
14-
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
15-
// Build our app and trigger a frame.
16-
await tester.pumpWidget(MyApp());
17-
18-
// Verify that our counter starts at 0.
19-
expect(find.text('0'), findsOneWidget);
20-
expect(find.text('1'), findsNothing);
21-
22-
// Tap the '+' icon and trigger a frame.
23-
await tester.tap(find.byIcon(Icons.add));
24-
await tester.pump();
25-
26-
// Verify that our counter has incremented.
27-
expect(find.text('0'), findsNothing);
28-
expect(find.text('1'), findsOneWidget);
29-
});
12+
testWidgets('Counter increments smoke test', (WidgetTester tester) async {});
3013
}

adaptive_navigation/test/adaptivenavigationscaffold_test.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,5 @@ import 'package:flutter_test/flutter_test.dart';
33
import 'package:adaptive_navigation_scaffold/scaffold.dart';
44

55
void main() {
6-
test('', () {
7-
});
6+
test('', () {});
87
}

0 commit comments

Comments
 (0)