Showing
3 changed files
with
3 additions
and
104 deletions
1 | -/*import 'package:flutter/widgets.dart'; | 1 | +import 'package:flutter/widgets.dart'; |
2 | import 'src/first_method.dart' as firstMethod; | 2 | import 'src/first_method.dart' as firstMethod; |
3 | import 'src/second_method.dart' as secondMethod; | 3 | import 'src/second_method.dart' as secondMethod; |
4 | 4 | ||
@@ -6,106 +6,3 @@ void main() { | @@ -6,106 +6,3 @@ void main() { | ||
6 | const method = int.fromEnvironment('method', defaultValue: 1); | 6 | const method = int.fromEnvironment('method', defaultValue: 1); |
7 | runApp(method == 1 ? firstMethod.MyApp() : secondMethod.MyApp()); | 7 | runApp(method == 1 ? firstMethod.MyApp() : secondMethod.MyApp()); |
8 | } | 8 | } |
9 | -*/ | ||
10 | - | ||
11 | -import 'dart:async'; | ||
12 | - | ||
13 | -import 'package:flutter/material.dart'; | ||
14 | -import 'package:flutter_screenutil/flutter_screenutil.dart'; | ||
15 | - | ||
16 | -void main() { | ||
17 | - runApp(ScreenUtilInit( | ||
18 | - builder: (child) => MaterialApp( | ||
19 | - key: GlobalObjectKey('screenutil'), | ||
20 | - theme: ThemeData( | ||
21 | - textTheme: TextTheme( | ||
22 | - bodyText2: TextStyle(fontSize: 32.sp), | ||
23 | - ), | ||
24 | - ), | ||
25 | - home: child, | ||
26 | - ), | ||
27 | - child: ThirdPage(), | ||
28 | - )); | ||
29 | -} | ||
30 | - | ||
31 | -class MyStatelessElement<T extends TestPage> extends StatelessElement { | ||
32 | - MyStatelessElement(T widget) : super(widget); | ||
33 | - | ||
34 | - @override | ||
35 | - T get widget => super.widget as T; | ||
36 | - | ||
37 | - @override | ||
38 | - void mount(Element? parent, Object? newSlot) { | ||
39 | - super.mount(parent, newSlot); | ||
40 | - print('${widget.text()} is mounted'); | ||
41 | - } | ||
42 | - | ||
43 | - @override | ||
44 | - void unmount() { | ||
45 | - print('${widget.text()} is unmounted'); | ||
46 | - super.unmount(); | ||
47 | - } | ||
48 | -} | ||
49 | - | ||
50 | -abstract class TestPage extends StatelessWidget { | ||
51 | - String text() => runtimeType.toString(); | ||
52 | - | ||
53 | - Widget goto(); | ||
54 | - | ||
55 | - @override | ||
56 | - StatelessElement createElement() => MyStatelessElement(this); | ||
57 | - | ||
58 | - @override | ||
59 | - Widget build(BuildContext context) { | ||
60 | - Timer(const Duration(seconds: 5), () { | ||
61 | - Navigator.of(context).pushAndRemoveUntil( | ||
62 | - MaterialPageRoute(builder: (context) => goto()), | ||
63 | - (route) => false, | ||
64 | - ); | ||
65 | - }); | ||
66 | - return Scaffold( | ||
67 | - body: SafeArea( | ||
68 | - child: Padding( | ||
69 | - padding: const EdgeInsets.all(20).r, | ||
70 | - child: Column( | ||
71 | - mainAxisSize: MainAxisSize.min, | ||
72 | - children: [ | ||
73 | - TextField(), | ||
74 | - Text( | ||
75 | - text(), | ||
76 | - style: TextStyle(fontSize: 32.sp), | ||
77 | - ), | ||
78 | - Text(text()), | ||
79 | - Expanded( | ||
80 | - child: ListView.separated( | ||
81 | - shrinkWrap: true, | ||
82 | - itemBuilder: (context, index) => Text('$index'), | ||
83 | - separatorBuilder: (_, __) => Container( | ||
84 | - height: 50.h, | ||
85 | - color: Colors.green, | ||
86 | - ), | ||
87 | - itemCount: 10, | ||
88 | - ), | ||
89 | - ), | ||
90 | - ], | ||
91 | - ), | ||
92 | - ), | ||
93 | - ), | ||
94 | - ); | ||
95 | - } | ||
96 | -} | ||
97 | - | ||
98 | -class FirstPage extends TestPage { | ||
99 | - @override | ||
100 | - Widget goto() => SecondPage(); | ||
101 | -} | ||
102 | - | ||
103 | -class SecondPage extends TestPage { | ||
104 | - @override | ||
105 | - Widget goto() => FirstPage(); | ||
106 | -} | ||
107 | - | ||
108 | -class ThirdPage extends TestPage { | ||
109 | - @override | ||
110 | - Widget goto() => FirstPage(); | ||
111 | -} |
@@ -57,6 +57,7 @@ class MyThemedApp extends StatelessWidget { | @@ -57,6 +57,7 @@ class MyThemedApp extends StatelessWidget { | ||
57 | debugShowCheckedModeBanner: false, | 57 | debugShowCheckedModeBanner: false, |
58 | title: 'First Method (Themed)', | 58 | title: 'First Method (Themed)', |
59 | builder: (ctx, child) { | 59 | builder: (ctx, child) { |
60 | + ScreenUtil.init(ctx); | ||
60 | return Theme( | 61 | return Theme( |
61 | data: ThemeData( | 62 | data: ThemeData( |
62 | primarySwatch: Colors.blue, | 63 | primarySwatch: Colors.blue, |
@@ -56,6 +56,7 @@ class MyThemedApp extends StatelessWidget { | @@ -56,6 +56,7 @@ class MyThemedApp extends StatelessWidget { | ||
56 | debugShowCheckedModeBanner: false, | 56 | debugShowCheckedModeBanner: false, |
57 | title: '第二种方法(带主题)', | 57 | title: '第二种方法(带主题)', |
58 | builder: (ctx, child) { | 58 | builder: (ctx, child) { |
59 | + ScreenUtil.init(ctx); | ||
59 | return Theme( | 60 | return Theme( |
60 | data: ThemeData( | 61 | data: ThemeData( |
61 | primarySwatch: Colors.blue, | 62 | primarySwatch: Colors.blue, |
-
Please register or login to post a comment