Compare commits
2 Commits
73e0f8f04c
...
a07d69f1ab
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a07d69f1ab | ||
|
|
b0ef478e99 |
|
|
@ -1,5 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:persistent_bottom_nav_bar_v2/persistent_bottom_nav_bar_v2.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:topic/BottomNavBar.dart';
|
||||
import 'package:topic/main.dart';
|
||||
import 'package:topic/HomePage.dart';
|
||||
|
|
@ -109,6 +111,19 @@ class _PersonalInfoState extends State<PersonalInfo> {
|
|||
}
|
||||
}
|
||||
|
||||
void _loginOut() async {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
// remove all data in share preference(user data which save to identify user or others)
|
||||
prefs.clear();
|
||||
// navbar router setting
|
||||
// replace screen with LoginPage and without navbar
|
||||
pushReplacementWithoutNavBar(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => LoginPage(),
|
||||
));
|
||||
}
|
||||
|
||||
//頁面
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
@ -208,7 +223,9 @@ class _PersonalInfoState extends State<PersonalInfo> {
|
|||
width: 60,
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () {},
|
||||
onPressed: () {
|
||||
_loginOut();
|
||||
},
|
||||
child: Text('登出'),
|
||||
style: TextButton.styleFrom(
|
||||
backgroundColor: Color(0xFFF5E3C3),
|
||||
|
|
|
|||
|
|
@ -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<LoginPage> {
|
|||
void initState() {//初始化
|
||||
super.initState();
|
||||
_fetchData();//連資料庫
|
||||
_CheckPreLoginInfo();//確定有先前有無登入
|
||||
}
|
||||
|
||||
void _fetchData() async {
|
||||
|
|
@ -40,6 +42,29 @@ class _LoginPageState extends State<LoginPage> {
|
|||
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<LoginPage> {
|
|||
_emailController.clear();
|
||||
_ageController.clear();
|
||||
// 如果找到匹配的帳號,登入成功,跳轉到主頁
|
||||
_setLoginInfo(email);
|
||||
Navigator.pushReplacement(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user