123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_tzh/base/YSBase.dart';
- import 'package:flutter_tzh/mine/YSMineChangePassword.dart';
- import 'package:flutter_tzh/mine/YSMineGatherPlan.dart';
- import 'package:flutter_tzh/tool/YSAlertView.dart';
- import 'package:flutter_tzh/tool/YSFileView.dart';
- import 'package:flutter_tzh/tool/YSNetWork.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- import '../login/YSLogin.dart';
- import '../tool/YSTools.dart';
- class YSMine extends StatefulWidget {
- const YSMine({Key? key}) : super(key: key);
- @override
- YSMineState createState() => YSMineState();
- }
- class YSMineState extends State<YSMine> {
- final List _menuArray = [
- {'image':'mine_menu1','title':'采集计划'},
- {'image':'mine_menu2','title':'修改密码'},
- {'image':'mine_menu3','title':'退出登陆'}
- ];
- Map _data = {};
- @override
- void initState() {
- networkDelay((){
- _getUserCenter();
- });
- super.initState();
- }
- _getUserCenter() async{
- YSNetWork.ysRequestHttp(context, type: RequestType.get, api: '/user/center', parameter: {}, successSetter: (dict){
- _data = dict['data']??{};
- setState(() {});
- });
- }
- @override
- Widget build(BuildContext context) {
- return YSBase(
- ysTitle: '个人中心',
- isTab: true,
- ysChild: Column(
- children: [
- Container(
- decoration: BoxDecoration(
- color: const Color(0xFF2E3138),
- borderRadius: const BorderRadius.all(Radius.circular(24)),
- border: Border.all(color: const Color(0xFF3E434E),width: hsp(1))
- ),
- height: hsp(333),
- width: ysWidth(context)-hsp(40),
- margin: EdgeInsets.only(top: hsp(20)),
- child: Column(
- children: [
- Container(
- height: hsp(161),
- alignment: Alignment.center,
- decoration: BoxDecoration(
- border: Border.all(color: const Color(0xFF3E434E),width: hsp(1))
- ),
- child: Column(
- mainAxisSize: MainAxisSize.min,
- children: [
- Container(
- width: ysWidth(context)-hsp(140),
- height: hsp(100),
- decoration: const BoxDecoration(
- image: DecorationImage(image: AssetImage('images/mine_bg.png'))
- ),
- alignment: Alignment.center,
- child: GestureDetector(
- onLongPress: () async{
- bool isAgree = await permissionHandler('file');
- if(isAgree&&mounted){
- ysShowCenterAlertView(context, YSTipsAlertView(valueSetter: (value) {
- if(value){
- uploadFile(context, (value) async{
- // LogUtil.d(value['url']);
- YSNetWork.ysRequestHttp(context, type: RequestType.post, api: '/user/modify', parameter: {'avatar':value['url']}, successSetter: (dict){
- bool data = dict['data']??false;
- if(data){
- _getUserCenter();
- }
- });
- });
- }
- },tipsStr: '是否修改头像?',));
- }
- },
- child: Container(
- height: hsp(60),
- width: hsp(60),
- decoration: _data.isEmpty?const BoxDecoration(
- borderRadius: BorderRadius.all(Radius.circular(7)),
- color: Colors.white,
- ):BoxDecoration(
- borderRadius: const BorderRadius.all(Radius.circular(7)),
- color: Colors.white,
- image: DecorationImage(image: NetworkImage('$fileUrl${_data['avatar']}'),fit: BoxFit.fill)
- ),
- ),
- ),
- ),
- Container(
- padding: EdgeInsets.only(left: hsp(13),right: hsp(13),top: hsp(5),bottom: hsp(5)),
- decoration: const BoxDecoration(
- color: Color(0xFF23262B),
- borderRadius: BorderRadius.all(Radius.circular(2)),
- ),
- margin: EdgeInsets.only(bottom: hsp(3)),
- child: Text(_data['name']??'',style: TextStyle(fontSize: zsp(11),color: const Color(0xFF8A93A0),backgroundColor: const Color(0xFF23262B))),
- ),
- Container(
- height: hsp(20),
- padding: EdgeInsets.only(left: hsp(5),right: hsp(5)),
- child: Text(_data['phone']??'',style: TextStyle(fontSize: zsp(12),color: const Color(0xFFACB5C5)),),
- )
- ],
- ),
- ),
- SizedBox(
- height: hsp(170),
- child: ListView.separated(
- itemBuilder: (context, index) {
- Map item = _menuArray[index];
- return GestureDetector(
- onTap: (){
- if(item['title']=='采集计划'){
- Navigator.of(context).push(
- CupertinoPageRoute(builder: (context){
- return const YSMineGatherPlan();
- })
- );
- }else if(item['title']=='修改密码'){
- Navigator.of(context).push(
- CupertinoPageRoute(builder: (context){
- return const YSMineChangePassword();
- })
- );
- }else if(item['title']=='退出登陆'){
- ysShowCenterAlertView(context, YSTipsAlertView(
- valueSetter: (value) async{
- if(value){
- YSNetWork.ysRequestHttp(context, type: RequestType.get, api: '/auth/logout', parameter: {}, successSetter: (dict) async{
- SharedPreferences prefs = await SharedPreferences.getInstance();
- prefs.remove('token');
- if(!mounted)return;
- Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context){
- return const YSLogin();
- }), (route) => false);
- });
- }
- },
- tipsStr: '是否退出登录?',
- ));
- }
- },
- behavior: HitTestBehavior.opaque,
- child: SizedBox(
- height: hsp(40),
- child: Row(
- children: [
- Image.asset('images/${item['image']}.png',height: hsp(7),width: hsp(7),),
- Container(
- width: ysWidth(context)-hsp(80),
- padding: EdgeInsets.only(left: hsp(10)),
- child: Text(item['title'],style: TextStyle(fontSize: zsp(15),color: const Color(0xFFDBE1EA)),),
- )
- ],
- ),
- ),
- );
- },
- separatorBuilder: (context,index){
- return Container(height: hsp(12),);
- },
- itemCount: _menuArray.length,
- shrinkWrap: true,
- padding: EdgeInsets.only(top: hsp(12),left: hsp(15),right: hsp(15)),
- physics: const NeverScrollableScrollPhysics(),
- ),
- ),
- ],
- ),
- ),
- ],
- ),
- );
- }
- }
|