登录后重新渲染个人页面bug fixed

This commit is contained in:
cxc
2022-06-28 16:21:47 +08:00
parent 2a933199ed
commit 7974cfd1ed
8 changed files with 161 additions and 82 deletions

View File

@ -44,10 +44,6 @@ class _CompassState extends State<CompassPage> {
var listb = [];
var listc = [];
// 省市名称,用于获取磁偏角
String proviceName = '';
String cityName = '';
void initDevice() {}
@override
@ -275,6 +271,11 @@ class _CompassState extends State<CompassPage> {
title: Text('选择城市校准磁偏角'),
content: RegionSelector(),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.pop(context);
},
child: const Text('关闭')),
TextButton(
onPressed: () {
Provider.of<RegionProvider>(context, listen: false)

View File

@ -2,17 +2,17 @@ import 'package:fengshui_compass/components/custom_textfield_widget.dart';
import 'package:fengshui_compass/models/login_bean.dart';
import 'package:fengshui_compass/net/dio_utils.dart';
import 'package:fengshui_compass/pages/register_page.dart';
import 'package:fengshui_compass/states/token.dart';
import 'package:fengshui_compass/utils/token_helper.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart';
import '../components/controller.dart';
import '../models/user_bean.dart';
import '../utils/user_helper.dart';
class LoginPage extends StatefulWidget {
final String username;
const LoginPage({Key key, this.username}) : super(key: key);
@override
@ -20,7 +20,6 @@ class LoginPage extends StatefulWidget {
}
class _LoginPageState extends State<LoginPage> {
final FocusNode _userNameFocusNode = FocusNode();
final FocusNode _passwordFocusNode = FocusNode();
@ -31,7 +30,7 @@ class _LoginPageState extends State<LoginPage> {
@override
void initState() {
if(widget.username != null) {
if (widget.username != null) {
setState(() {
_userNameEditController.text = widget.username;
});
@ -39,10 +38,8 @@ class _LoginPageState extends State<LoginPage> {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
// appBar: AppBar(
// elevation: 0,
@ -109,11 +106,13 @@ class _LoginPageState extends State<LoginPage> {
submit: (value) {
if (value.length != 11) {
Fluttertoast.showToast(msg: "请输入11位手机号");
FocusScope.of(context).requestFocus(_userNameFocusNode);
FocusScope.of(context)
.requestFocus(_userNameFocusNode);
return;
}
_userNameFocusNode.unfocus();
FocusScope.of(context).requestFocus(_passwordFocusNode);
FocusScope.of(context)
.requestFocus(_passwordFocusNode);
},
focusNode: _userNameFocusNode,
prefixIconData: Icons.phone_android_outlined,
@ -124,9 +123,10 @@ class _LoginPageState extends State<LoginPage> {
TextFieldWidget(
hintText: "密码",
submit: (value) {
if(value.length < 5) {
if (value.length < 5) {
Fluttertoast.showToast(msg: "请输入5位以上密码");
FocusScope.of(context).requestFocus(_passwordFocusNode);
FocusScope.of(context)
.requestFocus(_passwordFocusNode);
return;
}
_userNameFocusNode.unfocus();
@ -163,12 +163,14 @@ class _LoginPageState extends State<LoginPage> {
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text("没有账号, "),
TextButton(onPressed: (){
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RegisterPage()));
}, child: const Text("点击注册"))
TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RegisterPage()));
},
child: const Text("点击注册"))
],
)
],
@ -180,17 +182,17 @@ class _LoginPageState extends State<LoginPage> {
);
}
void submitFunction() async{
void submitFunction() async {
// 获取输入用户名密码
String userName = _userNameEditController.text;
String password = _passwordEditController.text;
if(userName.trim().length != 11) {
if (userName.trim().length != 11) {
Fluttertoast.showToast(msg: "请输入11位手机号");
return;
}
if(password.trim().length < 5) {
if (password.trim().length < 5) {
Fluttertoast.showToast(msg: "请输入5位以上密码");
}
@ -207,23 +209,20 @@ class _LoginPageState extends State<LoginPage> {
);
if (responseInfo.success) {
Map<String, dynamic> res = {
"token": responseInfo.token.toString()
};
LoginBean loginBean = LoginBean.fromMap(res);
TokenHelper.getInstance.loginBean = loginBean;
Fluttertoast.showToast(msg: "登录成功");
//关闭当前页面
Navigator.of(context).pop(true);
//发送消息更新我的页面显示内容
loginStreamController.add(0);
Map<String, dynamic> res = {"token": responseInfo.token.toString()};
LoginBean loginBean = LoginBean.fromMap(res);
TokenHelper.getInstance.loginBean = loginBean;
// 将token添加到状态管理器中
Provider.of<TokenProvider>(context, listen: false).setToken(loginBean);
Fluttertoast.showToast(msg: "登录成功");
//关闭当前页面
Navigator.of(context).pop(true);
//发送消息更新我的页面显示内容
// loginStreamController.add(0);
} else {
//登录失败页面小提示
Fluttertoast.showToast(msg: responseInfo.msg);
}
//登录失败页面小提示
Fluttertoast.showToast(msg: responseInfo.msg);
}
}
}

View File

@ -1,9 +1,9 @@
import 'package:fengshui_compass/pages/personal_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../bottom_navigation_widget.dart';
import '../utils/navigator_utils.dart';
import '../states/token.dart';
import '../utils/token_helper.dart';
// 用户未登录页面
@ -26,15 +26,21 @@ class _PersonalLoginPageState extends State<PersonalLoginPage> {
body: Container(
width: double.infinity,
child: Column(
children:[
children: [
Padding(padding: EdgeInsets.only(top: 80)),
SizedBox(height: 120,child: ClipRRect(borderRadius: BorderRadius.circular(60),child: Image.asset("assets/images/ic_launcher.png"),),),
SizedBox(
height: 120,
child: ClipRRect(
borderRadius: BorderRadius.circular(60),
child: Image.asset("assets/images/ic_launcher.png"),
),
),
Padding(padding: EdgeInsets.only(top: 30)),
ListTile(
title: Text("关于我们"),
trailing: const Icon(Icons.arrow_forward_ios_sharp),
leading: const Icon(Icons.account_circle),
onTap: (){},
onTap: () {},
),
ListTile(
title: Text("退出登陆"),
@ -43,7 +49,7 @@ class _PersonalLoginPageState extends State<PersonalLoginPage> {
onTap: () async {
bool isExit = await showCupertinoDialog(
context: context,
builder: (BuildContext context){
builder: (BuildContext context) {
return CupertinoAlertDialog(
title: const Text("温馨提示"),
content: Container(
@ -69,11 +75,13 @@ class _PersonalLoginPageState extends State<PersonalLoginPage> {
if (isExit) {
TokenHelper.getInstance.clear();
Navigator.of(context).push(
MaterialPageRoute(builder: (context) {
return BottomNavigationWidget();
})
);
//在状态管理器中清除token
Provider.of<TokenProvider>(context, listen: false)
.clearToken();
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) {
return BottomNavigationWidget();
}));
}
})
],

View File

@ -1,10 +1,9 @@
import 'package:fengshui_compass/components/controller.dart';
import 'package:fengshui_compass/pages/personal_login_page.dart';
import 'package:fengshui_compass/pages/personal_nologin_page.dart';
import 'package:fengshui_compass/states/token.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '../utils/token_helper.dart';
import 'package:provider/provider.dart';
class PersonalPage extends StatefulWidget {
const PersonalPage({Key key}) : super(key: key);
@ -14,29 +13,48 @@ class PersonalPage extends StatefulWidget {
}
class _PersonalPageState extends State<PersonalPage> {
@override
void initState() {
super.initState();
loginStreamController.stream.listen((event) {
setState(() {});
});
}
@override
void dispose() {
loginStreamController.close();
super.dispose();
}
// @override
// void initState() {
// super.initState();
// loginStreamController.stream.listen((event) {
// setState(() {});
// });
// }
//
// @override
// void dispose() {
// loginStreamController.close();
// super.dispose();
// }
@override
Widget build(BuildContext context) {
// 判断用户是否登陆
if (TokenHelper.getInstance.isLogin) {
// 构建已登录页面
return PersonalLoginPage();
} else {
// 构建未登录页面
return PersonalNoLoginPage();
}
return Consumer<TokenProvider>(builder: (builder, tokenProvider, child) {
if (tokenProvider.isLogin) {
// 构建已登录页面
return PersonalLoginPage();
} else {
// 构建未登录页面
return PersonalNoLoginPage();
}
});
}
}
// );
//
// // 判断用户是否登陆
// if
//
// (
//
// TokenHelper.getInstance.isLogin
//
// ) {
// print(TokenHelper.getInstance.isLogin);
// // 构建已登录页面
// return PersonalLoginPage();
// } else {
// // 构建未登录页面
// return PersonalNoLoginPage();
// }
// }}