Browse Source

[new]首页增加当日轨迹示例代码

zk 6 months ago
parent
commit
d0a73d2878

BIN
assets/images/icon_main_track_arrow.webp


BIN
assets/images/img_track_example.webp


+ 3 - 0
assets/string/base/string.xml

@@ -310,4 +310,7 @@
     <string name="dialog_net_error_desc">请检查您的网络连接并重试</string>
     <string name="dialog_net_error_again">重试</string>
     <string name="mine_update_avatar_success">设置成功</string>
+    <string name="today_simple_track">当日行动轨迹</string>
+    <string name="today_simple_track_start">起点</string>
+    <string name="today_simple_track_error">异常</string>
 </resources>

+ 71 - 13
lib/module/main/main_page.dart

@@ -6,6 +6,7 @@ import 'package:get/get.dart';
 import 'package:location/base/base_page.dart';
 import 'package:location/data/bean/user_info.dart';
 import 'package:location/module/main/main_controller.dart';
+import 'package:location/module/main/view.dart';
 import 'package:location/resource/assets.gen.dart';
 import 'package:location/resource/colors.gen.dart';
 import 'package:location/resource/string.gen.dart';
@@ -77,17 +78,6 @@ class MainPage extends BasePage<MainController> {
         // the total available space that the sheet can expand to.
         positioning: SnapPositioning.relativeToAvailableSpace,
       ),
-      // headerBuilder: (context, state) {
-      //   return Container(
-      //     height: 56,
-      //     width: double.infinity,
-      //     color: Colors.green,
-      //     alignment: Alignment.center,
-      //     child: Text(
-      //       'This is the header',
-      //     ),
-      //   );
-      // },
       footerBuilder: buildFooterBuilder,
       headerBuilder: buildHeaderBuilder,
       builder: buildTrackEntranceBuilder,
@@ -96,8 +86,76 @@ class MainPage extends BasePage<MainController> {
 
   Widget buildTrackEntranceBuilder(BuildContext context, SheetState state) {
     return Container(
-      height: 200.w,
-      width: 1.sw,
+      margin: EdgeInsets.only(left: 12.w, right: 12.w, bottom: 12.w),
+      padding: EdgeInsets.only(left: 12.w, right: 12.w, top: 12.w, bottom: 9.w),
+      decoration: BoxDecoration(
+          color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
+      child: AspectRatio(
+        aspectRatio: 336 / 134,
+        child: Column(
+          children: [
+            Row(
+              children: [
+                Text(StringName.todaySimpleTrack,
+                    style: TextStyle(
+                        fontSize: 13.sp,
+                        color: '#333333'.color,
+                        fontWeight: FontWeight.bold)),
+                Spacer(),
+                Assets.images.iconMainTrackArrow
+                    .image(width: 10.w, height: 10.w),
+              ],
+            ),
+            SizedBox(height: 7.w),
+            Expanded(
+              child: Row(
+                children: [
+                  Container(
+                    margin: EdgeInsets.only(bottom: 3.w, top: 3.w),
+                    child: AspectRatio(
+                      aspectRatio: 1,
+                      child: Assets.images.imgTrackExample.image(),
+                    ),
+                  ),
+                  SizedBox(width: 10.w),
+                  Column(
+                    mainAxisAlignment: MainAxisAlignment.center,
+                    children: [
+                      SizedBox(height: 6.w),
+                      getMainTrackDot('#15CBA1'.color),
+                      Expanded(
+                        child: Container(
+                          margin: EdgeInsets.symmetric(vertical: 4.w),
+                          width: 1.w,
+                          height: double.infinity,
+                          decoration: BoxDecoration(
+                            color: '#F0F0F0'.color,
+                            borderRadius: BorderRadius.circular(100.r),
+                          ),
+                        ),
+                      ),
+                      getMainTrackDot('#E94949'.color),
+                      SizedBox(height: 6.w),
+                    ],
+                  ),
+                  SizedBox(width: 8.w),
+                  Expanded(
+                    child: Column(
+                      children: [
+                        buildTrackPoint(MainTrackType.startPoint,
+                            '广东省广州市天河区高唐路235号靠近C栋2楼时代E-PARK'),
+                        Spacer(),
+                        buildTrackPoint(
+                            MainTrackType.errorPoint, '广东省广州市海珠区滨江东路驾驶花园C栋601'),
+                      ],
+                    ),
+                  )
+                ],
+              ),
+            ),
+          ],
+        ),
+      ),
     );
   }
 

+ 52 - 0
lib/module/main/view.dart

@@ -0,0 +1,52 @@
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:location/utils/common_expand.dart';
+
+import '../../resource/string.gen.dart';
+
+Widget getMainTrackDot(Color color) {
+  return Container(
+    width: 12.w,
+    height: 12.w,
+    decoration: BoxDecoration(
+      color: Colors.white,
+      shape: BoxShape.circle,
+      border: Border.all(color: color, width: 2.w),
+    ),
+  );
+}
+
+Widget buildTrackPoint(MainTrackType type, String address) {
+  return Text.rich(
+    TextSpan(
+      children: [
+        WidgetSpan(
+          alignment: PlaceholderAlignment.middle,
+          child: Container(
+            margin: EdgeInsets.only(right: 4.w),
+            padding: EdgeInsets.symmetric(horizontal: 4.w, vertical: 2.5.w),
+            decoration: BoxDecoration(
+              color: type == MainTrackType.startPoint
+                  ? '#15CBA1'.color
+                  : '#E94949'.color,
+              borderRadius: BorderRadius.circular(3.r),
+            ),
+            child: Text(
+              type == MainTrackType.startPoint
+                  ? StringName.todaySimpleTrackStart
+                  : StringName.todaySimpleTrackError,
+              style: TextStyle(color: Colors.white, fontSize: 11.sp, height: 1),
+            ),
+          ),
+        ),
+        TextSpan(
+          text: address,
+          style: TextStyle(fontSize: 12.sp, color: '#666666'.color),
+        ),
+      ],
+    ),
+  );
+}
+
+enum MainTrackType { startPoint, errorPoint }

+ 11 - 1
lib/resource/assets.gen.dart

@@ -228,6 +228,10 @@ class $AssetsImagesGen {
   AssetGenImage get iconMainRefreshMineLocation =>
       const AssetGenImage('assets/images/icon_main_refresh_mine_location.webp');
 
+  /// File path: assets/images/icon_main_track_arrow.webp
+  AssetGenImage get iconMainTrackArrow =>
+      const AssetGenImage('assets/images/icon_main_track_arrow.webp');
+
   /// File path: assets/images/icon_member_avatar.webp
   AssetGenImage get iconMemberAvatar =>
       const AssetGenImage('assets/images/icon_member_avatar.webp');
@@ -440,6 +444,10 @@ class $AssetsImagesGen {
   AssetGenImage get imgMemberRetainContainer =>
       const AssetGenImage('assets/images/img_member_retain_container.webp');
 
+  /// File path: assets/images/img_track_example.webp
+  AssetGenImage get imgTrackExample =>
+      const AssetGenImage('assets/images/img_track_example.webp');
+
   /// List of all assets
   List<AssetGenImage> get values => [
         bgAddFriendDialog,
@@ -496,6 +504,7 @@ class $AssetsImagesGen {
         iconMainNews,
         iconMainRefreshFriendLocation,
         iconMainRefreshMineLocation,
+        iconMainTrackArrow,
         iconMemberAvatar,
         iconMemberFun5,
         iconMemberFun1,
@@ -548,7 +557,8 @@ class $AssetsImagesGen {
         imgDialogLocationAlwaysTip1,
         imgDialogLocationAlwaysTip2,
         imgDialogLocationAlwaysTip3,
-        imgMemberRetainContainer
+        imgMemberRetainContainer,
+        imgTrackExample
       ];
 }