Browse Source

添加退出登录逻辑

tags/0.0.1
Weller 4 years ago
parent
commit
693a6ddcf4
5 changed files with 91 additions and 77 deletions
  1. +38
    -4
      lib/pages/setting_page/setting_page.dart
  2. +8
    -3
      lib/pages/setting_page/setting_page_bloc.dart
  3. +9
    -24
      lib/widgets/mine/mine_data/mine_data.dart
  4. +5
    -16
      lib/widgets/mine/mine_header/mine_header.dart
  5. +31
    -30
      lib/widgets/mine/mine_header/mine_header_static_container.dart

+ 38
- 4
lib/pages/setting_page/setting_page.dart View File

@@ -1,5 +1,6 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:zhiying_base_widget/pages/setting_page/models/setting_page_style_item_model.dart';
import 'package:zhiying_base_widget/pages/setting_page/models/setting_page_style_model.dart';
import 'package:zhiying_base_widget/pages/setting_page/setting_page_bloc.dart';
@@ -44,6 +45,7 @@ class _SettingContainerState extends State<_SettingContainer> {
void initState() {
_bloc = BlocProvider.of<SettingPageBloc>(context);
_bloc.loadData(widget.data['skip_identifier']);

super.initState();
}

@@ -53,15 +55,22 @@ class _SettingContainerState extends State<_SettingContainer> {
stream: _bloc.outData,
builder: (BuildContext context, AsyncSnapshot snapshot) {
SettingPageStyleModel style = snapshot.data;

List<Widget> widgets = List();
widgets.addAll(style?.settings?.map((list) {
return _createSection(list);
})?.toList() ??
[]);
widgets.add(Provider.of<UserInfoNotifier>(context).userInfo == null
? Container()
: _createLogout());

return Scaffold(
backgroundColor: Color(0xfff9f9f9),
appBar: _createNav(style),
body: SingleChildScrollView(
child: Column(
children: style?.settings?.map((list) {
return _createSection(list);
})?.toList() ??
[],
children: widgets,
),
));
});
@@ -151,4 +160,29 @@ class _SettingContainerState extends State<_SettingContainer> {
},
);
}

Widget _createLogout() {
return GestureDetector(
child: Container(
color: Colors.white,
width: double.infinity,
height: 50,
margin: EdgeInsets.only(top: 10),
child: Center(
child: Text(
'退出登录',
style: TextStyle(
fontSize: 13,
color: Color(0xffff4242),
fontWeight: FontWeight.bold,
),
),
),
),
onTap: () {
Logger.debug('退出登录');
Provider.of<UserInfoNotifier>(context, listen: false).unLogin();
},
);
}
}

+ 8
- 3
lib/pages/setting_page/setting_page_bloc.dart View File

@@ -9,7 +9,7 @@ class SettingPageBloc extends BlocBase {
SettingPageStyleModel _style;

StreamController<SettingPageStyleModel> _styleController =
StreamController<SettingPageStyleModel>();
StreamController<SettingPageStyleModel>();

Stream<SettingPageStyleModel> get outData => _styleController.stream;

@@ -21,13 +21,18 @@ class SettingPageBloc extends BlocBase {

void loadData(String skipIdentifier) async {
Api api = Api(
'/api/v1/mod/${skipIdentifier.toString()}', method: NetMethod.GET,);
'/api/v1/mod/${skipIdentifier.toString()}',
method: NetMethod.GET,
);
_loadData(await api.onCache());
_loadData(await api.onRequest());
_loadData(await api.onRequest());
}

void _loadData(dynamic data) {
Map<String, dynamic> json = Map<String, dynamic>.from(data);
if (json == null || json.length == 0) {
return;
}
String d = json['data'];
Map<String, dynamic> da = Map<String, dynamic>.from(convert.jsonDecode(d));
_style = SettingPageStyleModel.fromJson(da);


+ 9
- 24
lib/widgets/mine/mine_data/mine_data.dart View File

@@ -3,7 +3,6 @@ import 'dart:convert' as convert;
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:zhiying_base_widget/widgets/mine/mine_data/mine_data_container.dart';
import 'package:zhiying_base_widget/widgets/mine/mine_data/mine_data_sk.dart';
import 'package:zhiying_base_widget/widgets/mine/mine_data/mine_data_widget.dart';
import 'package:zhiying_base_widget/widgets/mine/mine_data/model/mine_data_model.dart';
import 'package:zhiying_base_widget/widgets/mine/mine_header/mine_header_bloc.dart';
@@ -21,24 +20,10 @@ class MineData extends StatefulWidget {
}

class _MineDataState extends State<MineData> {
UserInfoModel _user;
bool _isSketelon = true;

@override
Widget build(BuildContext context) {
if (_isSketelon) {
Provider.of<UserInfoNotifier>(context).getUserInfoModel().then((user) {
setState(() {
_user = user;
_isSketelon = false;
});
});
}

if (_isSketelon) {
return MineDataSkeleton();
}
if (_user == null) {
UserInfoModel user = Provider.of<UserInfoNotifier>(context).userInfo;
if (user == null) {
String value = '123';
int result = int.tryParse(value);

@@ -52,13 +37,13 @@ class _MineDataState extends State<MineData> {
return MineProfileDataModel(name: item.name, value: '¥0');
}).toList();
MineProfileModel profile = MineProfileModel(
username:'',
avatar:'',
inviteCode:'',
userLvName:'',
userLvIcon:'',
total:'',
gridViews:list,
username: '',
avatar: '',
inviteCode: '',
userLvName: '',
userLvIcon: '',
total: '',
gridViews: list,
);
return MineDataWidget(profile, widget.data);
}


+ 5
- 16
lib/widgets/mine/mine_header/mine_header.dart View File

@@ -3,7 +3,6 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:zhiying_base_widget/widgets/mine/mine_header/mine_header_bloc.dart';
import 'package:zhiying_base_widget/widgets/mine/mine_header/mine_header_container.dart';
import 'package:zhiying_base_widget/widgets/mine/mine_header/mine_header_sk.dart';
import 'package:zhiying_base_widget/widgets/mine/mine_header/mine_header_static_container.dart';
import 'package:zhiying_comm/util/base_bloc.dart';
import 'package:zhiying_comm/zhiying_comm.dart';
@@ -18,24 +17,14 @@ class MineHeader extends StatefulWidget {
}

class _MineHeaderState extends State<MineHeader> {
UserInfoModel _user;
bool _isSketelon = true;

@override
Widget build(BuildContext context) {
if (_isSketelon) {
Provider.of<UserInfoNotifier>(context).getUserInfoModel().then((user) {
setState(() {
_user = user;
_isSketelon = false;
});
});
}
// if (_isSketelon) {
// return MineHeaderSkeleton();
// }

if (_isSketelon) {
return MineHeaderSkeleton();
}
if (_user == null) {
UserInfoModel user = Provider.of<UserInfoNotifier>(context).userInfo;
if (user == null) {
// 未登录
return MineStaticContainer(widget.data);
}


+ 31
- 30
lib/widgets/mine/mine_header/mine_header_static_container.dart View File

@@ -1,10 +1,10 @@
import 'dart:convert' as convert;

import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:zhiying_base_widget/widgets/mine/mine_header/model/mine_header_model.dart';
import 'package:zhiying_comm/zhiying_comm.dart';

import 'package:cached_network_image/cached_network_image.dart';
import 'dart:convert' as convert;

// 未登录状态个人中心头部
class MineStaticContainer extends StatefulWidget {
final Map<String, dynamic> data;
@@ -39,37 +39,38 @@ class _MineStaticContainerState extends State<MineStaticContainer> {
fit: BoxFit.cover)),
),
onTap: () {
// RouterUtil.route(SkipModel.fromJson(widget.json), widget.json, context);
RouterUtil.route(
SkipModel.fromJson(widget.json), widget.json, context);
},
),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
width: 120,
height: 20,
child: Text(
widget.staticModel.loginName,
style: TextStyle(
color: HexColor.fromHex(
widget.staticModel.loginColor),
fontSize: 17),
),
),
Container(
margin: EdgeInsets.only(top: 8),
width: 80,
child: Text(
widget.staticModel.loginNameHelpText,
style: TextStyle(
color: HexColor.fromHex(
widget.staticModel.loginColor),
fontSize: 13),
)),
],
))
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
width: 120,
height: 20,
child: Text(
widget.staticModel.loginName,
style: TextStyle(
color: HexColor.fromHex(
widget.staticModel?.loginColor ?? '#ffffff'),
fontSize: 17),
),
),
Container(
margin: EdgeInsets.only(top: 8),
width: 80,
child: Text(
widget.staticModel.loginNameHelpText,
style: TextStyle(
color: HexColor.fromHex(
widget.staticModel?.loginColor ?? '#ffffff'),
fontSize: 13),
)),
],
))
],
),
);


Loading…
Cancel
Save