浏览代码

[new]完善设备下线弹窗

zk 5 月之前
父节点
当前提交
1c4a6465ea

二进制
assets/images/icon_account_replace_logo.webp


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

@@ -313,4 +313,7 @@
     <string name="today_simple_track">当日行动轨迹</string>
     <string name="today_simple_track_start">起点</string>
     <string name="today_simple_track_error">异常</string>
+    <string name="account_replace_title">您的账号已在另一台设备登录</string>
+    <string name="account_replace_desc">建议重新登录或切换其他账号</string>
+    <string name="account_replace_btn_txt">我知道了</string>
 </resources>

+ 89 - 2
lib/dialog/account_replace_dialog.dart

@@ -1,11 +1,21 @@
 import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
+import 'package:location/resource/string.gen.dart';
+import 'package:location/utils/common_expand.dart';
+
+import '../resource/assets.gen.dart';
+import '../resource/colors.gen.dart';
 
 class AccountReplaceDialog {
   static const String _tag = 'AccountReplaceDialog';
 
   static void show() {
-    SmartDialog.show(builder: (_) => _AccountReplaceView(), tag: _tag);
+    SmartDialog.show(
+        builder: (_) => _AccountReplaceView(),
+        tag: _tag,
+        clickMaskDismiss: false);
   }
 
   static void dismiss() {
@@ -16,6 +26,83 @@ class AccountReplaceDialog {
 class _AccountReplaceView extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
-    return Container(child: Text('账号已在其他设备登录,请重新登录'));
+    return Container(
+      width: 274.w,
+      decoration: BoxDecoration(
+          borderRadius: BorderRadius.circular(16.r),
+          border: Border.all(
+            color: Colors.white,
+            width: 2.w,
+          ),
+          gradient: LinearGradient(
+              begin: Alignment.topCenter,
+              end: Alignment.bottomCenter,
+              colors: [
+                '#E4E4FF'.color,
+                '#FFFFFF'.color,
+              ])),
+      child: Stack(
+        alignment: Alignment.center,
+        children: [
+          Positioned(
+              top: 16.w,
+              right: 16.w,
+              child: GestureDetector(
+                onTap: onCloseClick,
+                child: Assets.images.iconDialogClose2
+                    .image(width: 20.w, height: 20.w),
+              )),
+          buildAccountReplaceContent(),
+        ],
+      ),
+    );
+  }
+
+  Widget buildAccountReplaceContent() {
+    return IntrinsicHeight(
+      child: Column(
+        children: [
+          SizedBox(height: 33.w),
+          Assets.images.iconAccountReplaceLogo.image(height: 76.w),
+          SizedBox(height: 29.w),
+          Text(StringName.accountReplaceTitle,
+              style: TextStyle(
+                  fontSize: 17.sp,
+                  color: '#333333'.color,
+                  fontWeight: FontWeight.bold)),
+          SizedBox(height: 8.w),
+          Text(StringName.accountReplaceDesc,
+              style: TextStyle(fontSize: 14.sp, color: '#999999'.color)),
+          SizedBox(height: 20.w),
+          GestureDetector(
+            onTap: onKnowClick,
+            child: Container(
+              width: 229.w,
+              height: 43.w,
+              decoration: BoxDecoration(
+                color: ColorName.colorPrimary,
+                borderRadius: BorderRadius.circular(100.r),
+              ),
+              child: Center(
+                child: Text(StringName.accountReplaceBtnTxt,
+                    style: TextStyle(
+                        fontSize: 14.sp,
+                        color: Colors.white,
+                        fontWeight: FontWeight.w500)),
+              ),
+            ),
+          ),
+          SizedBox(height: 20.w),
+        ],
+      ),
+    );
+  }
+
+  void onCloseClick() {
+    AccountReplaceDialog.dismiss();
+  }
+
+  void onKnowClick() {
+    AccountReplaceDialog.dismiss();
   }
 }

+ 1 - 1
lib/dialog/net_error_dialog.dart

@@ -24,7 +24,7 @@ class NetErrorDialog {
 }
 
 class _NetErrorView extends StatelessWidget {
-  const _NetErrorView({super.key});
+  const _NetErrorView();
 
   @override
   Widget build(BuildContext context) {

+ 5 - 0
lib/resource/assets.gen.dart

@@ -64,6 +64,10 @@ class $AssetsImagesGen {
   AssetGenImage get bgUrgentContactPopup =>
       const AssetGenImage('assets/images/bg_urgent_contact_popup.webp');
 
+  /// File path: assets/images/icon_account_replace_logo.webp
+  AssetGenImage get iconAccountReplaceLogo =>
+      const AssetGenImage('assets/images/icon_account_replace_logo.webp');
+
   /// File path: assets/images/icon_agreement_close.webp
   AssetGenImage get iconAgreementClose =>
       const AssetGenImage('assets/images/icon_agreement_close.webp');
@@ -463,6 +467,7 @@ class $AssetsImagesGen {
         bgUrgentContactEmpty,
         bgUrgentContactLogo,
         bgUrgentContactPopup,
+        iconAccountReplaceLogo,
         iconAgreementClose,
         iconAlipayPayment,
         iconAlipayScanPayment,