From 693a6ddcf4aeb12c922c23d975050db90392b9af Mon Sep 17 00:00:00 2001 From: Weller <1812208341@qq.com> Date: Wed, 23 Sep 2020 17:56:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=80=80=E5=87=BA=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/setting_page/setting_page.dart | 42 +++++++++++-- lib/pages/setting_page/setting_page_bloc.dart | 11 +++- lib/widgets/mine/mine_data/mine_data.dart | 33 +++------- lib/widgets/mine/mine_header/mine_header.dart | 21 ++----- .../mine_header_static_container.dart | 61 ++++++++++--------- 5 files changed, 91 insertions(+), 77 deletions(-) diff --git a/lib/pages/setting_page/setting_page.dart b/lib/pages/setting_page/setting_page.dart index 9ccc5c1..306d7da 100644 --- a/lib/pages/setting_page/setting_page.dart +++ b/lib/pages/setting_page/setting_page.dart @@ -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(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 widgets = List(); + widgets.addAll(style?.settings?.map((list) { + return _createSection(list); + })?.toList() ?? + []); + widgets.add(Provider.of(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(context, listen: false).unLogin(); + }, + ); + } } diff --git a/lib/pages/setting_page/setting_page_bloc.dart b/lib/pages/setting_page/setting_page_bloc.dart index 908f78e..6e63ad1 100644 --- a/lib/pages/setting_page/setting_page_bloc.dart +++ b/lib/pages/setting_page/setting_page_bloc.dart @@ -9,7 +9,7 @@ class SettingPageBloc extends BlocBase { SettingPageStyleModel _style; StreamController _styleController = - StreamController(); + StreamController(); Stream 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 json = Map.from(data); + if (json == null || json.length == 0) { + return; + } String d = json['data']; Map da = Map.from(convert.jsonDecode(d)); _style = SettingPageStyleModel.fromJson(da); diff --git a/lib/widgets/mine/mine_data/mine_data.dart b/lib/widgets/mine/mine_data/mine_data.dart index 4303733..8127bbf 100644 --- a/lib/widgets/mine/mine_data/mine_data.dart +++ b/lib/widgets/mine/mine_data/mine_data.dart @@ -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 { - UserInfoModel _user; - bool _isSketelon = true; - @override Widget build(BuildContext context) { - if (_isSketelon) { - Provider.of(context).getUserInfoModel().then((user) { - setState(() { - _user = user; - _isSketelon = false; - }); - }); - } - - if (_isSketelon) { - return MineDataSkeleton(); - } - if (_user == null) { + UserInfoModel user = Provider.of(context).userInfo; + if (user == null) { String value = '123'; int result = int.tryParse(value); @@ -52,13 +37,13 @@ class _MineDataState extends State { 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); } diff --git a/lib/widgets/mine/mine_header/mine_header.dart b/lib/widgets/mine/mine_header/mine_header.dart index 902e16d..1a598a8 100644 --- a/lib/widgets/mine/mine_header/mine_header.dart +++ b/lib/widgets/mine/mine_header/mine_header.dart @@ -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 { - UserInfoModel _user; - bool _isSketelon = true; - @override Widget build(BuildContext context) { - if (_isSketelon) { - Provider.of(context).getUserInfoModel().then((user) { - setState(() { - _user = user; - _isSketelon = false; - }); - }); - } + // if (_isSketelon) { + // return MineHeaderSkeleton(); + // } - if (_isSketelon) { - return MineHeaderSkeleton(); - } - if (_user == null) { + UserInfoModel user = Provider.of(context).userInfo; + if (user == null) { // 未登录 return MineStaticContainer(widget.data); } diff --git a/lib/widgets/mine/mine_header/mine_header_static_container.dart b/lib/widgets/mine/mine_header/mine_header_static_container.dart index 900d726..f1cd62e 100644 --- a/lib/widgets/mine/mine_header/mine_header_static_container.dart +++ b/lib/widgets/mine/mine_header/mine_header_static_container.dart @@ -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 data; @@ -39,37 +39,38 @@ class _MineStaticContainerState extends State { 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: [ - 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: [ + 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), + )), + ], + )) ], ), );