@@ -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(); | |||
}, | |||
); | |||
} | |||
} |
@@ -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); | |||
@@ -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); | |||
} | |||
@@ -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); | |||
} | |||
@@ -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), | |||
)), | |||
], | |||
)) | |||
], | |||
), | |||
); | |||