Browse Source

完善闪屏页

liuyuqi-dellpc 1 year ago
parent
commit
435fd1b3d5
8 changed files with 250 additions and 6 deletions
  1. 1 1
      lib/main.dart
  2. 1 1
      lib/models/config.dart
  3. 5 0
      lib/pages/login_page.dart
  4. 23 3
      lib/pages/splash_page.dart
  5. 8 0
      lib/routes.dart
  6. 82 0
      lib/utils/sp_util.dart
  7. 128 0
      pubspec.lock
  8. 2 1
      pubspec.yaml

+ 1 - 1
lib/main.dart

@@ -25,4 +25,4 @@ class MyApp extends StatelessWidget {
       onGenerateRoute: Routes.onGenerateRoute,
     );
   }
-}
+}

+ 1 - 1
lib/models/config.dart

@@ -9,7 +9,7 @@ class Config {
     WidgetsFlutterBinding.ensureInitialized();
     // cachePath= await getApplicationDocumentsDirectory().then((value) => value.path);
     // await SpUtil.getInstance();
-
+  
     runApp();
 
     SystemChrome.setPreferredOrientations(

+ 5 - 0
lib/pages/login_page.dart

@@ -1,6 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_google_map/dao/user_dao.dart';
 import 'package:flutter_google_map/models/user_model.dart';
+import 'package:flutter_google_map/utils/sp_util.dart';
 
 /// Description: login page
 /// Time       : 07/09/2023 Sunday
@@ -73,6 +74,10 @@ class _LoginPageState extends State<LoginPage> {
     if (Form.of(context).validate()) {
       UserModel user =
           await userDao.login(userNameController.text, passwordController.text);
+      SpUtil.save("is_login", true);
+      SpUtil.save("current_user", [
+        {"username": userNameController.text, "pwd": passwordController.text}
+      ]);
     } else {
       ScaffoldMessenger.of(context).showSnackBar(
         const SnackBar(

+ 23 - 3
lib/pages/splash_page.dart

@@ -1,5 +1,6 @@
-import 'package:flutter/src/widgets/framework.dart';
-import 'package:flutter/src/widgets/placeholder.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_google_map/routes.dart';
+import 'package:flutter_google_map/utils/sp_util.dart';
 
 /// Description: splash page
 /// Time       : 07/06/2023 Thursday
@@ -14,6 +15,25 @@ class SplashPage extends StatefulWidget {
 class _SplashPageState extends State<SplashPage> {
   @override
   Widget build(BuildContext context) {
-    return const Placeholder();
+    return Scaffold(
+      body: Text("SplashPage"),
+    );
+  }
+
+  @override
+  void didChangeDependencies() {
+    super.didChangeDependencies();
+    goMain();
+  }
+
+  void goMain() async {
+    bool isLogin = await SpUtil.get("is_login", true);
+    if (isLogin) {
+      Future.delayed(Duration(seconds: 2), () {
+        Routes.popAndPushNamed(context, Routes.index);
+      });
+    } else {
+      Routes.popAndPushNamed(context, Routes.login);
+    }
   }
 }

+ 8 - 0
lib/routes.dart

@@ -32,4 +32,12 @@ class Routes {
         );
     }
   }
+
+  static void popAndPushNamed(BuildContext context, String routePath) {
+    Navigator.popAndPushNamed(context, routePath);
+  }
+
+  static void pushReplacementNamed(BuildContext context, String routePath) {
+    Navigator.pushReplacementNamed(context, routePath);
+  }
 }

+ 82 - 0
lib/utils/sp_util.dart

@@ -0,0 +1,82 @@
+import 'dart:convert';
+
+import 'package:shared_preferences/shared_preferences.dart';
+
+class SpUtil {
+  static Future<SharedPreferences> sharedPreferences =
+      SharedPreferences.getInstance();
+
+  static Future<T> get<T>(String key, T defaultValue) {
+    return sharedPreferences.then((s) {
+      if (s.get(key) == null) {
+        return defaultValue;
+      } else {
+        if (defaultValue is int) {
+          return s.getInt(key) as T;
+        }
+        if (defaultValue is double) {
+          return s.getDouble(key) as T;
+        }
+        if (defaultValue is String) {
+          return s.getString(key) as T;
+        }
+        if (defaultValue is List<String>) {
+          return s.getStringList(key) as T;
+        }
+        if (defaultValue is List<Map>) {
+          List<String>? dataList = s.getStringList(key);
+          return dataList?.map((value) {
+            return json.decode(value);
+          }).toList() as T;
+        }
+        if (defaultValue is bool) {
+          return s.getBool(key) as T;
+        }
+        return s.get(key) as T;
+      }
+    });
+  }
+
+  static Future<bool> save<T>(String key, T value) async {
+    return sharedPreferences.then((s) {
+      if (value == null) {
+        return s.remove(key);
+      } else {
+        if (value is int) {
+          return s.setInt(key, value);
+        }
+        if (value is double) {
+          return s.setDouble(key, value);
+        }
+        if (value is String) {
+          return s.setString(key, value);
+        }
+        if (value is List<String>) {
+          return s.setStringList(key, value);
+        }
+        if (value is List<Map>) {
+          List<String> dataList = value.map((value) {
+            return json.encode(value);
+          }).toList();
+          return s.setStringList(key, dataList);
+        }
+        if (value is bool) {
+          return s.setBool(key, value);
+        }
+      }
+      return false;
+    });
+  }
+
+  static Future<bool> remove(String key) {
+    return sharedPreferences.then((s) {
+      return s.remove(key);
+    });
+  }
+
+  static Future<bool> clear() {
+    return sharedPreferences.then((s) {
+      return s.clear();
+    });
+  }
+}

+ 128 - 0
pubspec.lock

@@ -65,6 +65,22 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.3.1"
+  ffi:
+    dependency: transitive
+    description:
+      name: ffi
+      sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.2"
+  file:
+    dependency: transitive
+    description:
+      name: file
+      sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "6.1.4"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -216,6 +232,38 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.8.2"
+  path_provider_linux:
+    dependency: transitive
+    description:
+      name: path_provider_linux
+      sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.11"
+  path_provider_platform_interface:
+    dependency: transitive
+    description:
+      name: path_provider_platform_interface
+      sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.0.6"
+  path_provider_windows:
+    dependency: transitive
+    description:
+      name: path_provider_windows
+      sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.1.7"
+  platform:
+    dependency: transitive
+    description:
+      name: platform
+      sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.1.0"
   plugin_platform_interface:
     dependency: transitive
     description:
@@ -224,6 +272,14 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.4"
+  process:
+    dependency: transitive
+    description:
+      name: process
+      sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.2.4"
   sanitize_html:
     dependency: transitive
     description:
@@ -232,6 +288,62 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
+  shared_preferences:
+    dependency: "direct main"
+    description:
+      name: shared_preferences
+      sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.2.0"
+  shared_preferences_android:
+    dependency: transitive
+    description:
+      name: shared_preferences_android
+      sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.2.0"
+  shared_preferences_foundation:
+    dependency: transitive
+    description:
+      name: shared_preferences_foundation
+      sha256: b046999bf0ff58f04c364491bb803dcfa8f42e47b19c75478f53d323684a8cc1
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.3.1"
+  shared_preferences_linux:
+    dependency: transitive
+    description:
+      name: shared_preferences_linux
+      sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.3.0"
+  shared_preferences_platform_interface:
+    dependency: transitive
+    description:
+      name: shared_preferences_platform_interface
+      sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.3.0"
+  shared_preferences_web:
+    dependency: transitive
+    description:
+      name: shared_preferences_web
+      sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.2.0"
+  shared_preferences_windows:
+    dependency: transitive
+    description:
+      name: shared_preferences_windows
+      sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "2.3.0"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -301,6 +413,22 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.4"
+  win32:
+    dependency: transitive
+    description:
+      name: win32
+      sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c"
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "4.1.4"
+  xdg_directories:
+    dependency: transitive
+    description:
+      name: xdg_directories
+      sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.0.0"
 sdks:
   dart: ">=2.19.2 <3.0.0"
   flutter: ">=3.3.0"

+ 2 - 1
pubspec.yaml

@@ -14,7 +14,8 @@ dependencies:
   cupertino_icons: ^1.0.5
   fluttertoast: ^8.2.2
   # dio: 
-
+  shared_preferences: ^2.0.7
+  
 dev_dependencies:
   flutter_test:
     sdk: flutter