From b0ef478e990b05991cb9c65c60baf1ec00a86f48 Mon Sep 17 00:00:00 2001 From: JingChiang Date: Tue, 3 Sep 2024 00:02:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=87=AA=E5=8B=95?= =?UTF-8?q?=E7=99=BB=E5=85=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 利用share perference 套件儲存使用者資料 在開啟時自動尋找是否有儲存及登入後儲存資料進share preference --- lib/main.dart | 26 ++++++++++++++++++++++++++ pubspec.yaml | 1 + 2 files changed, 27 insertions(+) diff --git a/lib/main.dart b/lib/main.dart index 9ade207..5c192ad 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:topic/HomePage.dart'; import 'package:mysql_client/mysql_client.dart'; import 'package:topic/RegisterPage.dart'; @@ -22,6 +23,7 @@ class _LoginPageState extends State { void initState() {//初始化 super.initState(); _fetchData();//連資料庫 + _CheckPreLoginInfo();//確定有先前有無登入 } void _fetchData() async { @@ -40,6 +42,29 @@ class _LoginPageState extends State { await conn.connect(); } + void _CheckPreLoginInfo() async{ + SharedPreferences prefs = await SharedPreferences.getInstance(); + //get user data from share preference else set empty to check not login before + String loginUserEmail = prefs.getString("email") ?? ""; + //replace screen to HomePage if there are previous data in share preference + if(loginUserEmail != ""){ + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (context) => HomePage( + email: loginUserEmail, + ), + ), + ); + } + } + + void _setLoginInfo(String email) async{ + //save user email into share preference to let app can auto login next open + SharedPreferences prefs = await SharedPreferences.getInstance(); + prefs.setString("email", email); + } + @override Widget build(BuildContext context) { debugPaintSizeEnabled=false; @@ -180,6 +205,7 @@ class _LoginPageState extends State { _emailController.clear(); _ageController.clear(); // 如果找到匹配的帳號,登入成功,跳轉到主頁 + _setLoginInfo(email); Navigator.pushReplacement( context, MaterialPageRoute( diff --git a/pubspec.yaml b/pubspec.yaml index a00dd68..ff32113 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -41,6 +41,7 @@ dependencies: http: ^1.2.2 webview_flutter: ^4.8.0 persistent_bottom_nav_bar_v2: ^5.3.0 + shared_preferences: ^2.2.3 dev_dependencies: flutter_test: