张延森 3 gadus atpakaļ
vecāks
revīzija
6e7d3a8898

Binārs
images/decorate.png Parādīt failu


+ 46
- 0
lib/models/entities/ExtendContent.dart Parādīt failu

1
+
2
+class ExtendContent {
3
+  // 租户号
4
+  String? extId;
5
+
6
+  // 扩展对象类型;message消息表 bannar轮播图 info资讯
7
+  String? targetType;
8
+
9
+  // 拓展对象Id
10
+  String? targetId;
11
+
12
+  // 内容类型;text文本 image图片
13
+  String? contentType;
14
+
15
+  // 内容
16
+  String? content;
17
+
18
+  // 排序
19
+  int? sort;
20
+
21
+  // 创建时间
22
+  String? createDate;
23
+
24
+  ExtendContent();
25
+
26
+  ExtendContent.simple({ this.content, this.contentType });
27
+
28
+  ExtendContent.fromJson(Map<String, dynamic> json)
29
+      : extId = json["extId"],
30
+        targetType = json["targetType"],
31
+        targetId = json["targetId"],
32
+        contentType = json["contentType"],
33
+        content = json["content"],
34
+        sort = json["sort"],
35
+        createDate = json["createDate"];
36
+
37
+  Map<String, dynamic> toJson() => {
38
+    'extId' : extId,
39
+    'targetType' : targetType,
40
+    'targetId' : targetId,
41
+    'contentType' : contentType,
42
+    'content' : content,
43
+    'sort' : sort,
44
+    'createDate' : createDate,
45
+  };
46
+}

+ 3
- 1
lib/pages/machinery/detail/index.dart Parādīt failu

18
 
18
 
19
     return Scaffold(
19
     return Scaffold(
20
       appBar: appBar,
20
       appBar: appBar,
21
-      body: page(context: context, appbarSize: appBar.preferredSize, handleClick: handleClick),
21
+      body: SingleChildScrollView(
22
+        child: page(context: context, handleClick: handleClick),
23
+      ),
22
     );
24
     );
23
   }
25
   }
24
 
26
 

+ 50
- 33
lib/pages/machinery/detail/widgets/detail.dart Parādīt failu

1
 
1
 
2
+import 'package:farmer_client/pages/machinery/widgets/DefLayout.dart';
3
+import 'package:farmer_client/pages/machinery/widgets/RoundButton.dart';
2
 import 'package:flutter/widgets.dart';
4
 import 'package:flutter/widgets.dart';
3
 import 'package:flutter/material.dart';
5
 import 'package:flutter/material.dart';
4
 import 'package:flutter_screenutil/flutter_screenutil.dart';
6
 import 'package:flutter_screenutil/flutter_screenutil.dart';
5
-
7
+import 'package:farmer_client/widgets/ExtendContentList.dart';
8
+import 'package:farmer_client/models/entities/ExtendContent.dart';
6
 import '../../widgets/summary.dart';
9
 import '../../widgets/summary.dart';
7
 
10
 
8
-Widget page({ required BuildContext context, required Size appbarSize, required void Function() handleClick}) {
11
+Widget page({ required BuildContext context, VoidCallback? handleClick}) {
9
   final _offset = 20.w;
12
   final _offset = 20.w;
10
   final width = MediaQuery.of(context).size.width;
13
   final width = MediaQuery.of(context).size.width;
11
-  final height = MediaQuery.of(context).size.height
12
-      - appbarSize.height
13
-      - MediaQuery.of(context).padding.top;
14
   final _bannerHeight = 250.w;
14
   final _bannerHeight = 250.w;
15
   final img = 'https://yz-websit.oss-cn-hangzhou.aliyuncs.com/xlk/index-icon19.jpg';
15
   final img = 'https://yz-websit.oss-cn-hangzhou.aliyuncs.com/xlk/index-icon19.jpg';
16
 
16
 
17
-  return Stack(
18
-    alignment: Alignment.topCenter,
17
+  final list = <ExtendContent>[
18
+    ExtendContent.simple(content: img, contentType: "image" ),
19
+    ExtendContent.simple(content: "有时,你可能想要创建一个水平滑动(而不是竖直滑动)的列表。 ListView widget 本身就支持水平列表的创建。我们将会使用标准的 ListView 构造方法,通过指定 scrollDirection 的值为水平方向,来覆盖默认的竖直方向。", contentType: "text" ),
20
+    ExtendContent.simple(content: img, contentType: "image" ),
21
+    ExtendContent.simple(content: "有时,你可能想要创建一个水平滑动(而不是竖直滑动)的列表。 ListView widget 本身就支持水平列表的创建。我们将会使用标准的 ListView 构造方法,通过指定 scrollDirection 的值为水平方向,来覆盖默认的竖直方向。", contentType: "text" ),
22
+    ExtendContent.simple(content: img, contentType: "image" ),
23
+    ExtendContent.simple(content: "有时,你可能想要创建一个水平滑动(而不是竖直滑动)的列表。 ListView widget 本身就支持水平列表的创建。我们将会使用标准的 ListView 构造方法,通过指定 scrollDirection 的值为水平方向,来覆盖默认的竖直方向。", contentType: "text" ),
24
+    ExtendContent.simple(content: img, contentType: "image" ),
25
+  ];
26
+
27
+  return DefLayout(
28
+      head: Image.network(img, fit: BoxFit.cover),
19
       children: [
29
       children: [
20
-        // 第一个组件用来撑满全屏
21
-        SizedBox(
22
-          width: width,
23
-          height: height,
24
-        ),
25
-        Positioned(
26
-          left: 0,
27
-          top: 0,
28
-          child: SizedBox(
29
-            height: _bannerHeight,
30
-            child: _banner(img),
31
-          ),
32
-        ),
33
-        Positioned(
34
-          left: 0,
35
-          top: _bannerHeight - _offset,
36
-          child: _content(context),
37
-        ),
38
-      ],
30
+        DefLayout.card(
31
+            top: DefLayout.headHeight - DefLayout.offset,
32
+            child: _content(context, list, handleClick),
33
+        )
34
+      ]
39
   );
35
   );
40
 }
36
 }
41
 
37
 
42
-Widget _banner(String imgUrl) {
43
-  return Image.network(imgUrl);
44
-}
45
-
46
-Widget _content(BuildContext context) {
38
+Widget _content(BuildContext context, List<ExtendContent> list, VoidCallback? handleClick) {
47
   final _border = 20.w;
39
   final _border = 20.w;
48
   return Container(
40
   return Container(
49
-    width: MediaQuery.of(context).size.width,
50
-    padding: EdgeInsets.only(top: 45.w, left: 15.w, right: 15.w, bottom: 20.w),
41
+    padding: EdgeInsets.only(top: 40.w, left: 15.w, right: 15.w, bottom: 20.w),
51
     decoration: BoxDecoration(
42
     decoration: BoxDecoration(
52
       color: Colors.white,
43
       color: Colors.white,
53
         borderRadius: BorderRadius.vertical(top: Radius.circular(_border))
44
         borderRadius: BorderRadius.vertical(top: Radius.circular(_border))
55
     child: Column(
46
     child: Column(
56
       children: [
47
       children: [
57
         summary(),
48
         summary(),
49
+        _sectionHead('农机详情'),
50
+        ExtendContentList(list: list),
51
+        SizedBox(height: 20.w,),
52
+        RoundButton(text: "预约", onPressed: handleClick,)
53
+      ],
54
+    ),
55
+  );
56
+}
57
+
58
+Widget _sectionHead(String title) {
59
+  Widget img = SizedBox(
60
+    width: 16.w,
61
+    height: 16.w,
62
+    child: Image.asset('images/decorate.png'),
63
+  );
64
+
65
+  return Container(
66
+    padding: EdgeInsets.fromLTRB(0, 20.w, 0, 20.w),
67
+    child: Row(
68
+      mainAxisAlignment: MainAxisAlignment.center,
69
+      children: [
70
+        img,
71
+        SizedBox(width: 20.w),
72
+        Text(title, style: TextStyle(fontSize: 16.sp, color: const Color(0xFF222222), fontWeight: FontWeight.w500),),
73
+        SizedBox(width: 20.w),
74
+        img,
58
       ],
75
       ],
59
     ),
76
     ),
60
   );
77
   );

+ 8
- 1
lib/pages/machinery/map/index.dart Parādīt failu

16
   @override
16
   @override
17
   Widget build(BuildContext context) {
17
   Widget build(BuildContext context) {
18
     final appBar = AppBar(title: Obx(() => Text(title.value)), centerTitle: true,);
18
     final appBar = AppBar(title: Obx(() => Text(title.value)), centerTitle: true,);
19
-    return Scaffold(appBar: appBar, body: page(context: context, appbarSize: appBar.preferredSize, handleClick: handleClick),);
19
+    return Scaffold(
20
+      appBar: appBar,
21
+      body: SafeArea(
22
+        child: SingleChildScrollView (
23
+          child: page(context: context, handleClick: handleClick),
24
+        ),
25
+      )
26
+    );
20
   }
27
   }
21
   
28
   
22
 }
29
 }

+ 25
- 77
lib/pages/machinery/map/widgets/detail.dart Parādīt failu

1
 
1
 
2
+import 'package:farmer_client/pages/machinery/widgets/DefLayout.dart';
3
+import 'package:farmer_client/pages/machinery/widgets/RoundButton.dart';
2
 import 'package:flutter/material.dart';
4
 import 'package:flutter/material.dart';
3
 import 'package:flutter/widgets.dart';
5
 import 'package:flutter/widgets.dart';
4
 import 'package:flutter_screenutil/flutter_screenutil.dart';
6
 import 'package:flutter_screenutil/flutter_screenutil.dart';
7
 
9
 
8
 import '../../widgets/summary.dart';
10
 import '../../widgets/summary.dart';
9
 
11
 
10
-Widget page({ required BuildContext context, required Size appbarSize, required void Function() handleClick}) {
12
+Widget page({ required BuildContext context, VoidCallback? handleClick}) {
11
   final _offset = 20.w;
13
   final _offset = 20.w;
12
   final width = MediaQuery.of(context).size.width;
14
   final width = MediaQuery.of(context).size.width;
13
-  final height = MediaQuery.of(context).size.height
14
-      - appbarSize.height
15
-      - MediaQuery.of(context).padding.top;
16
-  final mapHeight = height * 0.3;
17
-  final cardHeight = (height - mapHeight) / 2 + _offset;
15
+  final mapHeight = 226.5.w;
16
+  final cardHeight = 250.w;
18
 
17
 
19
 
18
 
20
   final img = 'https://yz-websit.oss-cn-hangzhou.aliyuncs.com/xlk/index-icon19.jpg';
19
   final img = 'https://yz-websit.oss-cn-hangzhou.aliyuncs.com/xlk/index-icon19.jpg';
21
   final LatLng position = LatLng(32.690712, 112.091892);
20
   final LatLng position = LatLng(32.690712, 112.091892);
22
 
21
 
23
-  return Stack(
24
-    alignment: Alignment.topCenter,
25
-    children: [
26
-      // 第一个组件用来撑满全屏
27
-      SizedBox(
28
-        width: width,
29
-        height: height,
30
-      ),
31
-      SizedBox(
32
-        width: width,
33
-        height: mapHeight,
34
-        child: AMap(position: position),
35
-      ),
36
-      Positioned(
37
-        left: 0,
38
-        top: mapHeight - _offset,
39
-        height: cardHeight,
40
-        child: _thumb(context, img),
41
-      ),
42
-      Positioned(
43
-        left: 0,
44
-        top: mapHeight + cardHeight - 2 * _offset,
45
-        height: cardHeight,
46
-        child: _content(context, handleClick),
47
-      ),
48
-    ],);
49
-}
50
-
51
-Widget _card(BuildContext context, Widget child) {
52
-  final _border = 20.w;
53
-  return Container(
54
-    width: MediaQuery.of(context).size.width,
55
-    clipBehavior: Clip.hardEdge,
56
-    decoration: BoxDecoration(
57
-        borderRadius: BorderRadius.vertical(top: Radius.circular(_border))
58
-    ),
59
-    child: child,
22
+  return DefLayout(
23
+      head: AMap(position: position),
24
+      children: [
25
+        DefLayout.card(
26
+            top: DefLayout.headHeight - DefLayout.offset,
27
+            height: DefLayout.headHeight,
28
+            child: Image.network(img, fit: BoxFit.cover)
29
+        ),
30
+        DefLayout.card(
31
+            top: (DefLayout.headHeight - DefLayout.offset) * 2,
32
+            padding: EdgeInsets.only(top: 45.w, left: 15.w, right: 15.w, bottom: 20.w),
33
+            child: _content(context, handleClick)
34
+        ),
35
+      ]
60
   );
36
   );
61
 }
37
 }
62
 
38
 
63
-Widget _thumb(BuildContext context, String imgUrl) {
64
-  return _card(context, Image.network(imgUrl, fit: BoxFit.cover));
65
-}
66
-
67
-
68
-Widget _button(void Function() handleClick) {
69
-  return ElevatedButton(
70
-    child: const Text("预约"),
71
-    style: ElevatedButton.styleFrom(
72
-        primary: const Color(0xFFFF703B),
73
-        textStyle: TextStyle(color: Colors.white, fontSize: 20.sp, letterSpacing: 5.sp),
74
-        elevation: 0,
75
-        minimumSize: Size(double.infinity, 49.w),
76
-        shape: RoundedRectangleBorder(
77
-          borderRadius: BorderRadius.all(Radius.circular(24.5.w)),
78
-        )
79
-    ),
80
-    onPressed: handleClick,
39
+Widget _content(BuildContext context, VoidCallback? handleClick) {
40
+  return Column(
41
+    children: [
42
+      summary(),
43
+      RoundButton(text: "预约", onPressed: handleClick,),
44
+    ],
81
   );
45
   );
82
-}
83
-
84
-Widget _content(BuildContext context, void Function() handleClick) {
85
-  return _card(context, Container(
86
-    padding: EdgeInsets.only(top: 45.w, left: 15.w, right: 15.w, bottom: 20.w),
87
-    decoration: const BoxDecoration(
88
-      color: Colors.white,
89
-    ),
90
-    child: Column(
91
-
92
-      children: [
93
-        summary(),
94
-        _button(handleClick),
95
-      ],
96
-    ),
97
-  ));
98
 }
46
 }

+ 44
- 0
lib/pages/machinery/widgets/DefLayout.dart Parādīt failu

1
+
2
+import 'package:flutter/material.dart';
3
+import 'package:flutter_screenutil/flutter_screenutil.dart';
4
+
5
+class DefLayout extends StatelessWidget {
6
+  Widget head;
7
+  List<Widget> children;
8
+
9
+  DefLayout({Key? key, required this.head, required this.children}): super(key: key);
10
+
11
+  static double headHeight = 250.w;
12
+  static double offset = 20.w;
13
+
14
+  static Widget card({required double top, required Widget child, double? height, EdgeInsetsGeometry? padding}) {
15
+    final _border = 20.w;
16
+    return Container(
17
+      margin: EdgeInsets.only(top: top),
18
+      padding: padding,
19
+      height: height,
20
+      clipBehavior: Clip.hardEdge,
21
+      decoration: BoxDecoration(
22
+          color: Colors.white,
23
+          borderRadius: BorderRadius.vertical(top: Radius.circular(_border))
24
+      ),
25
+      child: child,
26
+    );
27
+  }
28
+
29
+  @override
30
+  Widget build(BuildContext context) {
31
+    final width = MediaQuery.of(context).size.width;
32
+
33
+    return Stack(
34
+      children: [
35
+        SizedBox(
36
+          width: width,
37
+          height: headHeight,
38
+          child: head,
39
+        ),
40
+        ...children,
41
+      ],
42
+    );
43
+  }
44
+}

+ 30
- 0
lib/pages/machinery/widgets/RoundButton.dart Parādīt failu

1
+
2
+import 'package:flutter/material.dart';
3
+import 'package:flutter_screenutil/flutter_screenutil.dart';
4
+
5
+class RoundButton extends StatelessWidget {
6
+
7
+  String text;
8
+  VoidCallback? onPressed;
9
+
10
+  RoundButton({Key? key, this.onPressed, required this.text}): super(key: key);
11
+
12
+  @override
13
+  Widget build(BuildContext context) {
14
+
15
+    return ElevatedButton(
16
+      child: Text(text),
17
+      style: ElevatedButton.styleFrom(
18
+          primary: const Color(0xFFFF703B),
19
+          textStyle: TextStyle(color: Colors.white, fontSize: 20.sp, letterSpacing: 5.sp),
20
+          elevation: 0,
21
+          minimumSize: Size(double.infinity, 49.w),
22
+          shape: RoundedRectangleBorder(
23
+            borderRadius: BorderRadius.all(Radius.circular(24.5.w)),
24
+          )
25
+      ),
26
+      onPressed: onPressed,
27
+    );
28
+  }
29
+
30
+}

+ 3
- 7
lib/pages/machinery/widgets/summary.dart Parādīt failu

23
       Expanded(
23
       Expanded(
24
           child: Text("收割机001--S001",
24
           child: Text("收割机001--S001",
25
               style: TextStyle(
25
               style: TextStyle(
26
-                color: Color(0xFF222222),
26
+                color: const Color(0xFF222222),
27
                 fontSize: 18.sp,
27
                 fontSize: 18.sp,
28
                 fontWeight: FontWeight.bold,
28
                 fontWeight: FontWeight.bold,
29
               )),
29
               )),
60
                 ]
60
                 ]
61
             ),
61
             ),
62
           ),
62
           ),
63
-
64
-
65
-
66
-
67
         ),
63
         ),
68
       )
64
       )
69
     ],
65
     ],
76
       Icon(Icons.location_on_outlined, size: 16.sp,),
72
       Icon(Icons.location_on_outlined, size: 16.sp,),
77
       Expanded(
73
       Expanded(
78
         flex: 1,
74
         flex: 1,
79
-        child: Text("距离当前位置2.3公里 >>", style: TextStyle(color: Color(0xFF222222), fontSize: 15.sp),),
75
+        child: Text("距离当前位置2.3公里 >>", style: TextStyle(color: const Color(0xFF222222), fontSize: 15.sp),),
80
       ),
76
       ),
81
     ],
77
     ],
82
   );
78
   );
85
 Widget _detail() {
81
 Widget _detail() {
86
   return Container(
82
   return Container(
87
     alignment: Alignment.centerLeft,
83
     alignment: Alignment.centerLeft,
88
-    child: Text("农机手1的收割机", style: TextStyle(color: Color(0xFF222222), fontSize: 15.sp),),
84
+    child: Text("农机手1的收割机", style: TextStyle(color: const Color(0xFF222222), fontSize: 15.sp),),
89
   );
85
   );
90
 }
86
 }

+ 1
- 0
lib/routes/pages.dart Parādīt failu

18
   GetPage(name: '/addAddress', page: () =>  AddAddress()),
18
   GetPage(name: '/addAddress', page: () =>  AddAddress()),
19
   GetPage(name: '/userInfo', page: () =>  UserInfo()),
19
   GetPage(name: '/userInfo', page: () =>  UserInfo()),
20
   GetPage(name: '/machineryMap', page: () =>  MachineryMapPage()),
20
   GetPage(name: '/machineryMap', page: () =>  MachineryMapPage()),
21
+  GetPage(name: '/machineryDetail', page: () =>  MachineryDetailPage()),
21
   GetPage(name: '/aboutUs', page: () =>  AboutUs()),
22
   GetPage(name: '/aboutUs', page: () =>  AboutUs()),
22
   GetPage(name: '/agreement', page: () =>  Agreement()),
23
   GetPage(name: '/agreement', page: () =>  Agreement()),
23
 ];
24
 ];

+ 41
- 0
lib/widgets/ExtendContentList.dart Parādīt failu

1
+
2
+import 'package:flutter/widgets.dart';
3
+import 'package:flutter_screenutil/flutter_screenutil.dart';
4
+
5
+import '../models/entities/ExtendContent.dart';
6
+
7
+class ExtendContentList extends StatelessWidget {
8
+  final List<ExtendContent> list;
9
+
10
+  ExtendContentList({ Key? key, required this.list }) : super(key: key);
11
+  
12
+  Widget? _image(String? content) {
13
+    if (null == content || content.isEmpty) return null;
14
+    return Image.network(content, fit: BoxFit.cover);
15
+  }
16
+
17
+  Widget? _text(String? content) {
18
+    if (null == content || content.isEmpty) return null;
19
+    return Text(content);
20
+  }
21
+
22
+  @override
23
+  Widget build(BuildContext context) {
24
+
25
+    List<Widget> _widgets = [];
26
+    for (var i = 0; i < list.length; i += 1) {
27
+      if (i != 0 ) {
28
+        _widgets.add(SizedBox(height: 20.w,));
29
+      }
30
+      var item = list[i];
31
+      _widgets.add(Container(
32
+        child: item.contentType == "image" ? _image(item.content) : _text(item.content),
33
+      ));
34
+    }
35
+
36
+    return Column(
37
+      children: _widgets,
38
+    );
39
+  }
40
+
41
+}

+ 72
- 72
pubspec.lock Parādīt failu

5
     dependency: transitive
5
     dependency: transitive
6
     description:
6
     description:
7
       name: _fe_analyzer_shared
7
       name: _fe_analyzer_shared
8
-      url: "https://pub.dartlang.org"
8
+      url: "https://pub.flutter-io.cn"
9
     source: hosted
9
     source: hosted
10
     version: "39.0.0"
10
     version: "39.0.0"
11
   amap_flutter_base:
11
   amap_flutter_base:
12
     dependency: transitive
12
     dependency: transitive
13
     description:
13
     description:
14
       name: amap_flutter_base
14
       name: amap_flutter_base
15
-      url: "https://pub.dartlang.org"
15
+      url: "https://pub.flutter-io.cn"
16
     source: hosted
16
     source: hosted
17
     version: "3.0.0"
17
     version: "3.0.0"
18
   amap_flutter_map:
18
   amap_flutter_map:
19
     dependency: "direct main"
19
     dependency: "direct main"
20
     description:
20
     description:
21
       name: amap_flutter_map
21
       name: amap_flutter_map
22
-      url: "https://pub.dartlang.org"
22
+      url: "https://pub.flutter-io.cn"
23
     source: hosted
23
     source: hosted
24
     version: "3.0.0"
24
     version: "3.0.0"
25
   analyzer:
25
   analyzer:
26
     dependency: transitive
26
     dependency: transitive
27
     description:
27
     description:
28
       name: analyzer
28
       name: analyzer
29
-      url: "https://pub.dartlang.org"
29
+      url: "https://pub.flutter-io.cn"
30
     source: hosted
30
     source: hosted
31
     version: "4.0.0"
31
     version: "4.0.0"
32
   args:
32
   args:
33
     dependency: transitive
33
     dependency: transitive
34
     description:
34
     description:
35
       name: args
35
       name: args
36
-      url: "https://pub.dartlang.org"
36
+      url: "https://pub.flutter-io.cn"
37
     source: hosted
37
     source: hosted
38
     version: "2.3.0"
38
     version: "2.3.0"
39
   async:
39
   async:
40
     dependency: transitive
40
     dependency: transitive
41
     description:
41
     description:
42
       name: async
42
       name: async
43
-      url: "https://pub.dartlang.org"
43
+      url: "https://pub.flutter-io.cn"
44
     source: hosted
44
     source: hosted
45
     version: "2.8.2"
45
     version: "2.8.2"
46
   boolean_selector:
46
   boolean_selector:
47
     dependency: transitive
47
     dependency: transitive
48
     description:
48
     description:
49
       name: boolean_selector
49
       name: boolean_selector
50
-      url: "https://pub.dartlang.org"
50
+      url: "https://pub.flutter-io.cn"
51
     source: hosted
51
     source: hosted
52
     version: "2.1.0"
52
     version: "2.1.0"
53
   build:
53
   build:
54
     dependency: transitive
54
     dependency: transitive
55
     description:
55
     description:
56
       name: build
56
       name: build
57
-      url: "https://pub.dartlang.org"
57
+      url: "https://pub.flutter-io.cn"
58
     source: hosted
58
     source: hosted
59
     version: "2.3.0"
59
     version: "2.3.0"
60
   build_config:
60
   build_config:
61
     dependency: transitive
61
     dependency: transitive
62
     description:
62
     description:
63
       name: build_config
63
       name: build_config
64
-      url: "https://pub.dartlang.org"
64
+      url: "https://pub.flutter-io.cn"
65
     source: hosted
65
     source: hosted
66
     version: "1.0.0"
66
     version: "1.0.0"
67
   carousel_slider:
67
   carousel_slider:
68
     dependency: "direct main"
68
     dependency: "direct main"
69
     description:
69
     description:
70
       name: carousel_slider
70
       name: carousel_slider
71
-      url: "https://pub.dartlang.org"
71
+      url: "https://pub.flutter-io.cn"
72
     source: hosted
72
     source: hosted
73
     version: "4.0.0"
73
     version: "4.0.0"
74
   characters:
74
   characters:
75
     dependency: transitive
75
     dependency: transitive
76
     description:
76
     description:
77
       name: characters
77
       name: characters
78
-      url: "https://pub.dartlang.org"
78
+      url: "https://pub.flutter-io.cn"
79
     source: hosted
79
     source: hosted
80
     version: "1.2.0"
80
     version: "1.2.0"
81
   charcode:
81
   charcode:
82
     dependency: transitive
82
     dependency: transitive
83
     description:
83
     description:
84
       name: charcode
84
       name: charcode
85
-      url: "https://pub.dartlang.org"
85
+      url: "https://pub.flutter-io.cn"
86
     source: hosted
86
     source: hosted
87
     version: "1.3.1"
87
     version: "1.3.1"
88
   checked_yaml:
88
   checked_yaml:
89
     dependency: transitive
89
     dependency: transitive
90
     description:
90
     description:
91
       name: checked_yaml
91
       name: checked_yaml
92
-      url: "https://pub.dartlang.org"
92
+      url: "https://pub.flutter-io.cn"
93
     source: hosted
93
     source: hosted
94
     version: "2.0.1"
94
     version: "2.0.1"
95
   clock:
95
   clock:
96
     dependency: transitive
96
     dependency: transitive
97
     description:
97
     description:
98
       name: clock
98
       name: clock
99
-      url: "https://pub.dartlang.org"
99
+      url: "https://pub.flutter-io.cn"
100
     source: hosted
100
     source: hosted
101
     version: "1.1.0"
101
     version: "1.1.0"
102
   collection:
102
   collection:
103
     dependency: transitive
103
     dependency: transitive
104
     description:
104
     description:
105
       name: collection
105
       name: collection
106
-      url: "https://pub.dartlang.org"
106
+      url: "https://pub.flutter-io.cn"
107
     source: hosted
107
     source: hosted
108
     version: "1.15.0"
108
     version: "1.15.0"
109
   convert:
109
   convert:
110
     dependency: transitive
110
     dependency: transitive
111
     description:
111
     description:
112
       name: convert
112
       name: convert
113
-      url: "https://pub.dartlang.org"
113
+      url: "https://pub.flutter-io.cn"
114
     source: hosted
114
     source: hosted
115
     version: "3.0.1"
115
     version: "3.0.1"
116
   crypto:
116
   crypto:
117
     dependency: transitive
117
     dependency: transitive
118
     description:
118
     description:
119
       name: crypto
119
       name: crypto
120
-      url: "https://pub.dartlang.org"
120
+      url: "https://pub.flutter-io.cn"
121
     source: hosted
121
     source: hosted
122
     version: "3.0.1"
122
     version: "3.0.1"
123
   cupertino_icons:
123
   cupertino_icons:
124
     dependency: "direct main"
124
     dependency: "direct main"
125
     description:
125
     description:
126
       name: cupertino_icons
126
       name: cupertino_icons
127
-      url: "https://pub.dartlang.org"
127
+      url: "https://pub.flutter-io.cn"
128
     source: hosted
128
     source: hosted
129
     version: "1.0.4"
129
     version: "1.0.4"
130
   dart_style:
130
   dart_style:
131
     dependency: transitive
131
     dependency: transitive
132
     description:
132
     description:
133
       name: dart_style
133
       name: dart_style
134
-      url: "https://pub.dartlang.org"
134
+      url: "https://pub.flutter-io.cn"
135
     source: hosted
135
     source: hosted
136
     version: "2.2.3"
136
     version: "2.2.3"
137
   dio:
137
   dio:
138
     dependency: "direct main"
138
     dependency: "direct main"
139
     description:
139
     description:
140
       name: dio
140
       name: dio
141
-      url: "https://pub.dartlang.org"
141
+      url: "https://pub.flutter-io.cn"
142
     source: hosted
142
     source: hosted
143
     version: "4.0.6"
143
     version: "4.0.6"
144
   fake_async:
144
   fake_async:
145
     dependency: transitive
145
     dependency: transitive
146
     description:
146
     description:
147
       name: fake_async
147
       name: fake_async
148
-      url: "https://pub.dartlang.org"
148
+      url: "https://pub.flutter-io.cn"
149
     source: hosted
149
     source: hosted
150
     version: "1.2.0"
150
     version: "1.2.0"
151
   ffi:
151
   ffi:
152
     dependency: transitive
152
     dependency: transitive
153
     description:
153
     description:
154
       name: ffi
154
       name: ffi
155
-      url: "https://pub.dartlang.org"
155
+      url: "https://pub.flutter-io.cn"
156
     source: hosted
156
     source: hosted
157
     version: "1.1.2"
157
     version: "1.1.2"
158
   file:
158
   file:
159
     dependency: transitive
159
     dependency: transitive
160
     description:
160
     description:
161
       name: file
161
       name: file
162
-      url: "https://pub.dartlang.org"
162
+      url: "https://pub.flutter-io.cn"
163
     source: hosted
163
     source: hosted
164
     version: "6.1.2"
164
     version: "6.1.2"
165
   flutter:
165
   flutter:
171
     dependency: "direct dev"
171
     dependency: "direct dev"
172
     description:
172
     description:
173
       name: flutter_lints
173
       name: flutter_lints
174
-      url: "https://pub.dartlang.org"
174
+      url: "https://pub.flutter-io.cn"
175
     source: hosted
175
     source: hosted
176
     version: "1.0.4"
176
     version: "1.0.4"
177
   flutter_localizations:
177
   flutter_localizations:
183
     dependency: transitive
183
     dependency: transitive
184
     description:
184
     description:
185
       name: flutter_plugin_android_lifecycle
185
       name: flutter_plugin_android_lifecycle
186
-      url: "https://pub.dartlang.org"
186
+      url: "https://pub.flutter-io.cn"
187
     source: hosted
187
     source: hosted
188
     version: "2.0.5"
188
     version: "2.0.5"
189
   flutter_screenutil:
189
   flutter_screenutil:
190
     dependency: "direct main"
190
     dependency: "direct main"
191
     description:
191
     description:
192
       name: flutter_screenutil
192
       name: flutter_screenutil
193
-      url: "https://pub.dartlang.org"
193
+      url: "https://pub.flutter-io.cn"
194
     source: hosted
194
     source: hosted
195
     version: "5.4.0+1"
195
     version: "5.4.0+1"
196
   flutter_test:
196
   flutter_test:
207
     dependency: "direct main"
207
     dependency: "direct main"
208
     description:
208
     description:
209
       name: fluttertoast
209
       name: fluttertoast
210
-      url: "https://pub.dartlang.org"
210
+      url: "https://pub.flutter-io.cn"
211
     source: hosted
211
     source: hosted
212
     version: "8.0.9"
212
     version: "8.0.9"
213
   get:
213
   get:
214
     dependency: "direct main"
214
     dependency: "direct main"
215
     description:
215
     description:
216
       name: get
216
       name: get
217
-      url: "https://pub.dartlang.org"
217
+      url: "https://pub.flutter-io.cn"
218
     source: hosted
218
     source: hosted
219
     version: "4.6.1"
219
     version: "4.6.1"
220
   get_storage:
220
   get_storage:
221
     dependency: "direct main"
221
     dependency: "direct main"
222
     description:
222
     description:
223
       name: get_storage
223
       name: get_storage
224
-      url: "https://pub.dartlang.org"
224
+      url: "https://pub.flutter-io.cn"
225
     source: hosted
225
     source: hosted
226
     version: "2.0.3"
226
     version: "2.0.3"
227
   glob:
227
   glob:
228
     dependency: transitive
228
     dependency: transitive
229
     description:
229
     description:
230
       name: glob
230
       name: glob
231
-      url: "https://pub.dartlang.org"
231
+      url: "https://pub.flutter-io.cn"
232
     source: hosted
232
     source: hosted
233
     version: "2.0.2"
233
     version: "2.0.2"
234
   http_parser:
234
   http_parser:
235
     dependency: transitive
235
     dependency: transitive
236
     description:
236
     description:
237
       name: http_parser
237
       name: http_parser
238
-      url: "https://pub.dartlang.org"
238
+      url: "https://pub.flutter-io.cn"
239
     source: hosted
239
     source: hosted
240
     version: "4.0.0"
240
     version: "4.0.0"
241
   intl:
241
   intl:
242
     dependency: transitive
242
     dependency: transitive
243
     description:
243
     description:
244
       name: intl
244
       name: intl
245
-      url: "https://pub.dartlang.org"
245
+      url: "https://pub.flutter-io.cn"
246
     source: hosted
246
     source: hosted
247
     version: "0.17.0"
247
     version: "0.17.0"
248
   js:
248
   js:
249
     dependency: transitive
249
     dependency: transitive
250
     description:
250
     description:
251
       name: js
251
       name: js
252
-      url: "https://pub.dartlang.org"
252
+      url: "https://pub.flutter-io.cn"
253
     source: hosted
253
     source: hosted
254
     version: "0.6.3"
254
     version: "0.6.3"
255
   json_annotation:
255
   json_annotation:
256
     dependency: transitive
256
     dependency: transitive
257
     description:
257
     description:
258
       name: json_annotation
258
       name: json_annotation
259
-      url: "https://pub.dartlang.org"
259
+      url: "https://pub.flutter-io.cn"
260
     source: hosted
260
     source: hosted
261
     version: "4.4.0"
261
     version: "4.4.0"
262
   json_serializable:
262
   json_serializable:
263
     dependency: "direct main"
263
     dependency: "direct main"
264
     description:
264
     description:
265
       name: json_serializable
265
       name: json_serializable
266
-      url: "https://pub.dartlang.org"
266
+      url: "https://pub.flutter-io.cn"
267
     source: hosted
267
     source: hosted
268
     version: "6.1.6"
268
     version: "6.1.6"
269
   lints:
269
   lints:
270
     dependency: transitive
270
     dependency: transitive
271
     description:
271
     description:
272
       name: lints
272
       name: lints
273
-      url: "https://pub.dartlang.org"
273
+      url: "https://pub.flutter-io.cn"
274
     source: hosted
274
     source: hosted
275
     version: "1.0.1"
275
     version: "1.0.1"
276
   location:
276
   location:
277
     dependency: "direct main"
277
     dependency: "direct main"
278
     description:
278
     description:
279
       name: location
279
       name: location
280
-      url: "https://pub.dartlang.org"
280
+      url: "https://pub.flutter-io.cn"
281
     source: hosted
281
     source: hosted
282
     version: "4.3.0"
282
     version: "4.3.0"
283
   location_platform_interface:
283
   location_platform_interface:
284
     dependency: transitive
284
     dependency: transitive
285
     description:
285
     description:
286
       name: location_platform_interface
286
       name: location_platform_interface
287
-      url: "https://pub.dartlang.org"
287
+      url: "https://pub.flutter-io.cn"
288
     source: hosted
288
     source: hosted
289
     version: "2.3.0"
289
     version: "2.3.0"
290
   location_web:
290
   location_web:
291
     dependency: transitive
291
     dependency: transitive
292
     description:
292
     description:
293
       name: location_web
293
       name: location_web
294
-      url: "https://pub.dartlang.org"
294
+      url: "https://pub.flutter-io.cn"
295
     source: hosted
295
     source: hosted
296
     version: "3.1.1"
296
     version: "3.1.1"
297
   logging:
297
   logging:
298
     dependency: transitive
298
     dependency: transitive
299
     description:
299
     description:
300
       name: logging
300
       name: logging
301
-      url: "https://pub.dartlang.org"
301
+      url: "https://pub.flutter-io.cn"
302
     source: hosted
302
     source: hosted
303
     version: "1.0.2"
303
     version: "1.0.2"
304
   matcher:
304
   matcher:
305
     dependency: transitive
305
     dependency: transitive
306
     description:
306
     description:
307
       name: matcher
307
       name: matcher
308
-      url: "https://pub.dartlang.org"
308
+      url: "https://pub.flutter-io.cn"
309
     source: hosted
309
     source: hosted
310
     version: "0.12.11"
310
     version: "0.12.11"
311
   material_color_utilities:
311
   material_color_utilities:
312
     dependency: transitive
312
     dependency: transitive
313
     description:
313
     description:
314
       name: material_color_utilities
314
       name: material_color_utilities
315
-      url: "https://pub.dartlang.org"
315
+      url: "https://pub.flutter-io.cn"
316
     source: hosted
316
     source: hosted
317
     version: "0.1.3"
317
     version: "0.1.3"
318
   meta:
318
   meta:
319
     dependency: transitive
319
     dependency: transitive
320
     description:
320
     description:
321
       name: meta
321
       name: meta
322
-      url: "https://pub.dartlang.org"
322
+      url: "https://pub.flutter-io.cn"
323
     source: hosted
323
     source: hosted
324
     version: "1.7.0"
324
     version: "1.7.0"
325
   package_config:
325
   package_config:
326
     dependency: transitive
326
     dependency: transitive
327
     description:
327
     description:
328
       name: package_config
328
       name: package_config
329
-      url: "https://pub.dartlang.org"
329
+      url: "https://pub.flutter-io.cn"
330
     source: hosted
330
     source: hosted
331
     version: "2.0.2"
331
     version: "2.0.2"
332
   path:
332
   path:
333
     dependency: transitive
333
     dependency: transitive
334
     description:
334
     description:
335
       name: path
335
       name: path
336
-      url: "https://pub.dartlang.org"
336
+      url: "https://pub.flutter-io.cn"
337
     source: hosted
337
     source: hosted
338
     version: "1.8.0"
338
     version: "1.8.0"
339
   path_provider:
339
   path_provider:
340
     dependency: transitive
340
     dependency: transitive
341
     description:
341
     description:
342
       name: path_provider
342
       name: path_provider
343
-      url: "https://pub.dartlang.org"
343
+      url: "https://pub.flutter-io.cn"
344
     source: hosted
344
     source: hosted
345
     version: "2.0.9"
345
     version: "2.0.9"
346
   path_provider_android:
346
   path_provider_android:
347
     dependency: transitive
347
     dependency: transitive
348
     description:
348
     description:
349
       name: path_provider_android
349
       name: path_provider_android
350
-      url: "https://pub.dartlang.org"
350
+      url: "https://pub.flutter-io.cn"
351
     source: hosted
351
     source: hosted
352
     version: "2.0.12"
352
     version: "2.0.12"
353
   path_provider_ios:
353
   path_provider_ios:
354
     dependency: transitive
354
     dependency: transitive
355
     description:
355
     description:
356
       name: path_provider_ios
356
       name: path_provider_ios
357
-      url: "https://pub.dartlang.org"
357
+      url: "https://pub.flutter-io.cn"
358
     source: hosted
358
     source: hosted
359
     version: "2.0.8"
359
     version: "2.0.8"
360
   path_provider_linux:
360
   path_provider_linux:
361
     dependency: transitive
361
     dependency: transitive
362
     description:
362
     description:
363
       name: path_provider_linux
363
       name: path_provider_linux
364
-      url: "https://pub.dartlang.org"
364
+      url: "https://pub.flutter-io.cn"
365
     source: hosted
365
     source: hosted
366
     version: "2.1.5"
366
     version: "2.1.5"
367
   path_provider_macos:
367
   path_provider_macos:
368
     dependency: transitive
368
     dependency: transitive
369
     description:
369
     description:
370
       name: path_provider_macos
370
       name: path_provider_macos
371
-      url: "https://pub.dartlang.org"
371
+      url: "https://pub.flutter-io.cn"
372
     source: hosted
372
     source: hosted
373
     version: "2.0.5"
373
     version: "2.0.5"
374
   path_provider_platform_interface:
374
   path_provider_platform_interface:
375
     dependency: transitive
375
     dependency: transitive
376
     description:
376
     description:
377
       name: path_provider_platform_interface
377
       name: path_provider_platform_interface
378
-      url: "https://pub.dartlang.org"
378
+      url: "https://pub.flutter-io.cn"
379
     source: hosted
379
     source: hosted
380
     version: "2.0.3"
380
     version: "2.0.3"
381
   path_provider_windows:
381
   path_provider_windows:
382
     dependency: transitive
382
     dependency: transitive
383
     description:
383
     description:
384
       name: path_provider_windows
384
       name: path_provider_windows
385
-      url: "https://pub.dartlang.org"
385
+      url: "https://pub.flutter-io.cn"
386
     source: hosted
386
     source: hosted
387
     version: "2.0.5"
387
     version: "2.0.5"
388
   platform:
388
   platform:
389
     dependency: transitive
389
     dependency: transitive
390
     description:
390
     description:
391
       name: platform
391
       name: platform
392
-      url: "https://pub.dartlang.org"
392
+      url: "https://pub.flutter-io.cn"
393
     source: hosted
393
     source: hosted
394
     version: "3.1.0"
394
     version: "3.1.0"
395
   plugin_platform_interface:
395
   plugin_platform_interface:
396
     dependency: transitive
396
     dependency: transitive
397
     description:
397
     description:
398
       name: plugin_platform_interface
398
       name: plugin_platform_interface
399
-      url: "https://pub.dartlang.org"
399
+      url: "https://pub.flutter-io.cn"
400
     source: hosted
400
     source: hosted
401
     version: "2.1.2"
401
     version: "2.1.2"
402
   process:
402
   process:
403
     dependency: transitive
403
     dependency: transitive
404
     description:
404
     description:
405
       name: process
405
       name: process
406
-      url: "https://pub.dartlang.org"
406
+      url: "https://pub.flutter-io.cn"
407
     source: hosted
407
     source: hosted
408
     version: "4.2.4"
408
     version: "4.2.4"
409
   pub_semver:
409
   pub_semver:
410
     dependency: transitive
410
     dependency: transitive
411
     description:
411
     description:
412
       name: pub_semver
412
       name: pub_semver
413
-      url: "https://pub.dartlang.org"
413
+      url: "https://pub.flutter-io.cn"
414
     source: hosted
414
     source: hosted
415
     version: "2.1.1"
415
     version: "2.1.1"
416
   pubspec_parse:
416
   pubspec_parse:
417
     dependency: transitive
417
     dependency: transitive
418
     description:
418
     description:
419
       name: pubspec_parse
419
       name: pubspec_parse
420
-      url: "https://pub.dartlang.org"
420
+      url: "https://pub.flutter-io.cn"
421
     source: hosted
421
     source: hosted
422
     version: "1.2.0"
422
     version: "1.2.0"
423
   sky_engine:
423
   sky_engine:
429
     dependency: transitive
429
     dependency: transitive
430
     description:
430
     description:
431
       name: source_gen
431
       name: source_gen
432
-      url: "https://pub.dartlang.org"
432
+      url: "https://pub.flutter-io.cn"
433
     source: hosted
433
     source: hosted
434
     version: "1.2.2"
434
     version: "1.2.2"
435
   source_helper:
435
   source_helper:
436
     dependency: transitive
436
     dependency: transitive
437
     description:
437
     description:
438
       name: source_helper
438
       name: source_helper
439
-      url: "https://pub.dartlang.org"
439
+      url: "https://pub.flutter-io.cn"
440
     source: hosted
440
     source: hosted
441
     version: "1.3.2"
441
     version: "1.3.2"
442
   source_span:
442
   source_span:
443
     dependency: transitive
443
     dependency: transitive
444
     description:
444
     description:
445
       name: source_span
445
       name: source_span
446
-      url: "https://pub.dartlang.org"
446
+      url: "https://pub.flutter-io.cn"
447
     source: hosted
447
     source: hosted
448
     version: "1.8.1"
448
     version: "1.8.1"
449
   stack_trace:
449
   stack_trace:
450
     dependency: transitive
450
     dependency: transitive
451
     description:
451
     description:
452
       name: stack_trace
452
       name: stack_trace
453
-      url: "https://pub.dartlang.org"
453
+      url: "https://pub.flutter-io.cn"
454
     source: hosted
454
     source: hosted
455
     version: "1.10.0"
455
     version: "1.10.0"
456
   stream_channel:
456
   stream_channel:
457
     dependency: transitive
457
     dependency: transitive
458
     description:
458
     description:
459
       name: stream_channel
459
       name: stream_channel
460
-      url: "https://pub.dartlang.org"
460
+      url: "https://pub.flutter-io.cn"
461
     source: hosted
461
     source: hosted
462
     version: "2.1.0"
462
     version: "2.1.0"
463
   stream_transform:
463
   stream_transform:
464
     dependency: transitive
464
     dependency: transitive
465
     description:
465
     description:
466
       name: stream_transform
466
       name: stream_transform
467
-      url: "https://pub.dartlang.org"
467
+      url: "https://pub.flutter-io.cn"
468
     source: hosted
468
     source: hosted
469
     version: "2.0.0"
469
     version: "2.0.0"
470
   string_scanner:
470
   string_scanner:
471
     dependency: transitive
471
     dependency: transitive
472
     description:
472
     description:
473
       name: string_scanner
473
       name: string_scanner
474
-      url: "https://pub.dartlang.org"
474
+      url: "https://pub.flutter-io.cn"
475
     source: hosted
475
     source: hosted
476
     version: "1.1.0"
476
     version: "1.1.0"
477
   term_glyph:
477
   term_glyph:
478
     dependency: transitive
478
     dependency: transitive
479
     description:
479
     description:
480
       name: term_glyph
480
       name: term_glyph
481
-      url: "https://pub.dartlang.org"
481
+      url: "https://pub.flutter-io.cn"
482
     source: hosted
482
     source: hosted
483
     version: "1.2.0"
483
     version: "1.2.0"
484
   test_api:
484
   test_api:
485
     dependency: transitive
485
     dependency: transitive
486
     description:
486
     description:
487
       name: test_api
487
       name: test_api
488
-      url: "https://pub.dartlang.org"
488
+      url: "https://pub.flutter-io.cn"
489
     source: hosted
489
     source: hosted
490
     version: "0.4.8"
490
     version: "0.4.8"
491
   typed_data:
491
   typed_data:
492
     dependency: transitive
492
     dependency: transitive
493
     description:
493
     description:
494
       name: typed_data
494
       name: typed_data
495
-      url: "https://pub.dartlang.org"
495
+      url: "https://pub.flutter-io.cn"
496
     source: hosted
496
     source: hosted
497
     version: "1.3.0"
497
     version: "1.3.0"
498
   vector_math:
498
   vector_math:
499
     dependency: transitive
499
     dependency: transitive
500
     description:
500
     description:
501
       name: vector_math
501
       name: vector_math
502
-      url: "https://pub.dartlang.org"
502
+      url: "https://pub.flutter-io.cn"
503
     source: hosted
503
     source: hosted
504
     version: "2.1.1"
504
     version: "2.1.1"
505
   watcher:
505
   watcher:
506
     dependency: transitive
506
     dependency: transitive
507
     description:
507
     description:
508
       name: watcher
508
       name: watcher
509
-      url: "https://pub.dartlang.org"
509
+      url: "https://pub.flutter-io.cn"
510
     source: hosted
510
     source: hosted
511
     version: "1.0.1"
511
     version: "1.0.1"
512
   win32:
512
   win32:
513
     dependency: transitive
513
     dependency: transitive
514
     description:
514
     description:
515
       name: win32
515
       name: win32
516
-      url: "https://pub.dartlang.org"
516
+      url: "https://pub.flutter-io.cn"
517
     source: hosted
517
     source: hosted
518
     version: "2.5.1"
518
     version: "2.5.1"
519
   xdg_directories:
519
   xdg_directories:
520
     dependency: transitive
520
     dependency: transitive
521
     description:
521
     description:
522
       name: xdg_directories
522
       name: xdg_directories
523
-      url: "https://pub.dartlang.org"
523
+      url: "https://pub.flutter-io.cn"
524
     source: hosted
524
     source: hosted
525
     version: "0.2.0+1"
525
     version: "0.2.0+1"
526
   yaml:
526
   yaml:
527
     dependency: transitive
527
     dependency: transitive
528
     description:
528
     description:
529
       name: yaml
529
       name: yaml
530
-      url: "https://pub.dartlang.org"
530
+      url: "https://pub.flutter-io.cn"
531
     source: hosted
531
     source: hosted
532
     version: "3.1.0"
532
     version: "3.1.0"
533
 sdks:
533
 sdks: