ソースを参照

Merge branch 'master' of http://git.ycjcjy.com/nanyang/farmer_client

李志伟 3 年 前
コミット
91e2b10708
共有3 個のファイルを変更した35 個の追加48 個の削除を含む
  1. 20
    25
      lib/pages/TabBar/widgets/home/index.dart
  2. 10
    18
      lib/pages/TabBar/widgets/home/widgets/headers.dart
  3. 5
    5
      lib/routes/middleWares.dart

+ 20
- 25
lib/pages/TabBar/widgets/home/index.dart ファイルの表示

9
 import '../../../../services/homeAPI.dart';
9
 import '../../../../services/homeAPI.dart';
10
 import '../../../../widgets/CarsCard.dart';
10
 import '../../../../widgets/CarsCard.dart';
11
 import 'package:farmer_client/models/app.dart';
11
 import 'package:farmer_client/models/app.dart';
12
+import '../../../../widgets/layout/BasicPage.dart';
12
 import '../../../MoreCars/index.dart';
13
 import '../../../MoreCars/index.dart';
13
 
14
 
14
-class HomePage extends StatefulWidget {
15
-  const HomePage({Key? key}) : super(key: key);
16
 
15
 
17
-  @override
18
-  State<HomePage> createState() => _HomePageState();
19
-}
20
 
16
 
21
-class _HomePageState extends State<HomePage> {
22
-  final CarouselController _controller = CarouselController();
23
-  List<banner> BannerList = [];
17
+class HomePage extends BasicPage {
18
+
19
+  final bannerList = Rx<List<banner>>([]);
24
 
20
 
25
   @override
21
   @override
26
-  void initState() {
27
-    super.initState();
22
+  void beforeShow() {
28
     final location = AppController.t.locationStr;
23
     final location = AppController.t.locationStr;
29
 
24
 
30
     getHomeBanner('banner').then((value) {
25
     getHomeBanner('banner').then((value) {
31
-      setState(() {
32
-        value.forEach((item) {
33
-          BannerList.add(banner.fromJson(item));
34
-        });
26
+      value.forEach((item) {
27
+        bannerList.value.add(banner.fromJson(item));
35
       });
28
       });
36
     });
29
     });
37
   }
30
   }
38
 
31
 
32
+  List<Widget>? _renderList() {
33
+    return bannerList.value.map((item) => Container(
34
+      child: Center(
35
+          child: Image.network(item.thumb.toString(),
36
+              fit: BoxFit.cover, width: 350.w)),
37
+    )).toList();
38
+  }
39
+
39
   @override
40
   @override
40
-  Widget build(BuildContext context) {
41
+  Widget builder (BuildContext context) {
41
     return Container(
42
     return Container(
42
       alignment: Alignment.center,
43
       alignment: Alignment.center,
43
       padding: EdgeInsets.fromLTRB(15.w, 0, 15.w, 0),
44
       padding: EdgeInsets.fromLTRB(15.w, 0, 15.w, 0),
44
-      child: ListView(
45
+      child: Column(
45
         children: [
46
         children: [
46
           Container(
47
           Container(
47
-            width: 20.w,
48
             child: TypeHeader(
48
             child: TypeHeader(
49
               type: true,
49
               type: true,
50
             ),
50
             ),
52
           Container(
52
           Container(
53
             margin: EdgeInsets.fromLTRB(0, 15, 0, 0),
53
             margin: EdgeInsets.fromLTRB(0, 15, 0, 0),
54
             child:
54
             child:
55
-                // Text('asdasdas')
56
-                CarouselSlider(
57
-              items: BannerList.map((item) => Container(
58
-                    child: Center(
59
-                        child: Image.network(item.thumb.toString(),
60
-                            fit: BoxFit.cover, width: 350.w)),
61
-                  )).toList(),
55
+                Obx(() => CarouselSlider(
56
+              items: _renderList(),
62
               options: CarouselOptions(
57
               options: CarouselOptions(
63
                 autoPlay: true,
58
                 autoPlay: true,
64
                 enlargeCenterPage: false, //图片中心放大
59
                 enlargeCenterPage: false, //图片中心放大
67
                 height: 214.w,
62
                 height: 214.w,
68
                 initialPage: 1, //初始页
63
                 initialPage: 1, //初始页
69
               ),
64
               ),
70
-            ),
65
+            )),
71
           ),
66
           ),
72
           Container(
67
           Container(
73
               margin: EdgeInsets.fromLTRB(0, 20, 0, 20),
68
               margin: EdgeInsets.fromLTRB(0, 20, 0, 20),

+ 10
- 18
lib/pages/TabBar/widgets/home/widgets/headers.dart ファイルの表示

2
 import 'package:flutter_screenutil/flutter_screenutil.dart';
2
 import 'package:flutter_screenutil/flutter_screenutil.dart';
3
 import 'package:get/get.dart';
3
 import 'package:get/get.dart';
4
 
4
 
5
-
6
 class TypeHeader extends StatefulWidget {
5
 class TypeHeader extends StatefulWidget {
7
   TypeHeader({Key? key, required this.type}) : super(key: key);
6
   TypeHeader({Key? key, required this.type}) : super(key: key);
8
 
7
 
14
 
13
 
15
 class _TypeHeaderState extends State<TypeHeader> {
14
 class _TypeHeaderState extends State<TypeHeader> {
16
   @override
15
   @override
17
-  Widget build (BuildContext context) {
16
+  Widget build(BuildContext context) {
18
     if (widget.type) {
17
     if (widget.type) {
19
       return Container(
18
       return Container(
20
         child: Row(
19
         child: Row(
20
+          // mainAxisAlignment: MainAxisAlignment.start,
21
           children: [
21
           children: [
22
             Container(
22
             Container(
23
               height: 32.w,
23
               height: 32.w,
41
                       ),
41
                       ),
42
                     ),
42
                     ),
43
                   ),
43
                   ),
44
-        Container(
45
-          padding: EdgeInsets.fromLTRB(0, 0, 10, 0),
46
-          child: Icon(Icons.arrow_drop_down),
47
-        ),
44
+                  Container(
45
+                    padding: EdgeInsets.fromLTRB(0, 0, 10, 0),
46
+                    child: Icon(Icons.arrow_drop_down),
47
+                  ),
48
                   _initWidget(),
48
                   _initWidget(),
49
                 ],
49
                 ],
50
               ),
50
               ),
54
       );
54
       );
55
     } else {
55
     } else {
56
       return _initWidget();
56
       return _initWidget();
57
-
58
     }
57
     }
59
-
60
-
61
   }
58
   }
62
 }
59
 }
63
 //
60
 //
64
 
61
 
65
-
66
 class _initWidget extends StatelessWidget {
62
 class _initWidget extends StatelessWidget {
67
   const _initWidget({Key? key}) : super(key: key);
63
   const _initWidget({Key? key}) : super(key: key);
68
 
64
 
76
             onTap: () {
72
             onTap: () {
77
               print('点击了搜索');
73
               print('点击了搜索');
78
               Get.toNamed('/searchPage');
74
               Get.toNamed('/searchPage');
79
-
80
             },
75
             },
81
             child: Container(
76
             child: Container(
82
               decoration: const BoxDecoration(
77
               decoration: const BoxDecoration(
85
                 borderRadius: BorderRadius.all(Radius.circular(25)),
80
                 borderRadius: BorderRadius.all(Radius.circular(25)),
86
               ),
81
               ),
87
               child: Row(
82
               child: Row(
88
-                children: [
83
+                children: const [
89
                   Padding(
84
                   Padding(
90
-                    padding: EdgeInsets.fromLTRB(15, 0, 5, 0),
85
+                    padding: EdgeInsets.fromLTRB(5, 0, 5, 0),
91
                     child: Icon(
86
                     child: Icon(
92
                       Icons.search,
87
                       Icons.search,
93
                       size: 19,
88
                       size: 19,
101
                 ],
96
                 ],
102
               ),
97
               ),
103
             )
98
             )
104
-          // Search(),
105
-        ));
106
-
99
+            // Search(),
100
+            ));
107
   }
101
   }
108
 }
102
 }
109
-
110
-

+ 5
- 5
lib/routes/middleWares.dart ファイルの表示

9
   bool isSplashScreen = routing?.current == '/splash';
9
   bool isSplashScreen = routing?.current == '/splash';
10
   bool isLoginPage = routing?.current == '/login';
10
   bool isLoginPage = routing?.current == '/login';
11
   bool isAgreementPage = routing?.current == '/agreement';
11
   bool isAgreementPage = routing?.current == '/agreement';
12
-  // if (!isLogin && !isSplashScreen && !isLoginPage&&!isAgreementPage) {
13
-  //   // addPostFrameCallback 作用是等当前帧绘制完成之后再加载
14
-  //   // https://github.com/jonataslaw/getx/issues/262
15
-  //   SchedulerBinding.instance?.addPostFrameCallback((_) => Get.offNamed('/login'));
16
-  // }
12
+  if (!isLogin && !isSplashScreen && !isLoginPage&&!isAgreementPage) {
13
+    // addPostFrameCallback 作用是等当前帧绘制完成之后再加载
14
+    // https://github.com/jonataslaw/getx/issues/262
15
+    SchedulerBinding.instance?.addPostFrameCallback((_) => Get.offNamed('/login'));
16
+  }
17
 }
17
 }