You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
4.4 KiB
Dart
145 lines
4.4 KiB
Dart
//https://material.io/tools/icons/?icon=favorite&style=baseline
|
|
|
|
import 'package:flutter/material.dart';
|
|
import '../../widget/JdButton.dart';
|
|
|
|
|
|
import '../../services/UserServices.dart';
|
|
|
|
import '../../services/EventBus.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
|
|
|
|
class UserPage extends StatefulWidget {
|
|
UserPage({Key key}) : super(key: key);
|
|
|
|
_UserPageState createState() => _UserPageState();
|
|
}
|
|
|
|
class _UserPageState extends State<UserPage> {
|
|
bool isLogin = false;
|
|
List userInfo = [];
|
|
|
|
@override
|
|
void initState() {
|
|
// TODO: implement initState
|
|
super.initState();
|
|
this._getUserinfo();
|
|
|
|
//监听登录页面改变的事件
|
|
eventBus.on<UserEvent>().listen((event) {
|
|
print(event.str);
|
|
this._getUserinfo();
|
|
});
|
|
}
|
|
|
|
_getUserinfo() async {
|
|
var isLogin = await UserServices.getUserLoginState();
|
|
var userInfo = await UserServices.getUserInfo();
|
|
|
|
setState(() {
|
|
this.userInfo = userInfo;
|
|
this.isLogin = isLogin;
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
// appBar: AppBar(
|
|
// title: Text("用户中心"),
|
|
// ),
|
|
body: ListView(
|
|
children: <Widget>[
|
|
Container(
|
|
height: ScreenUtil().setHeight(220),
|
|
width: double.infinity,
|
|
decoration:
|
|
BoxDecoration(image: DecorationImage(image: AssetImage('assets/images/user_bg.jpg'), fit: BoxFit.cover)),
|
|
child: Row(
|
|
children: <Widget>[
|
|
Container(
|
|
margin: EdgeInsets.fromLTRB(10, 0, 10, 0),
|
|
child: ClipOval(
|
|
child: Image.asset(
|
|
'assets/images/user.png',
|
|
fit: BoxFit.cover,
|
|
width: ScreenUtil().setWidth(100),
|
|
height: ScreenUtil().setWidth(100),
|
|
),
|
|
),
|
|
),
|
|
!this.isLogin
|
|
? Expanded(
|
|
flex: 1,
|
|
child: InkWell(
|
|
onTap: () {
|
|
Navigator.pushNamed(context, '/login');
|
|
},
|
|
child: Text("登录/注册", style: TextStyle(color: Colors.white)),
|
|
),
|
|
)
|
|
: Expanded(
|
|
flex: 1,
|
|
child: Column(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: <Widget>[
|
|
Text("用户名:${this.userInfo[0]["username"]}",
|
|
style: TextStyle(color: Colors.white, fontSize: ScreenUtil().setSp(32))),
|
|
Text("普通会员", style: TextStyle(color: Colors.white, fontSize: ScreenUtil().setSp(24))),
|
|
],
|
|
),
|
|
)
|
|
],
|
|
),
|
|
),
|
|
ListTile(
|
|
leading: Icon(Icons.assignment, color: Colors.red),
|
|
title: Text("全部订单"),
|
|
onTap: () {
|
|
Navigator.pushNamed(context, '/order');
|
|
},
|
|
),
|
|
Divider(),
|
|
ListTile(
|
|
leading: Icon(Icons.payment, color: Colors.green),
|
|
title: Text("待付款"),
|
|
),
|
|
Divider(),
|
|
ListTile(
|
|
leading: Icon(Icons.local_car_wash, color: Colors.orange),
|
|
title: Text("待收货"),
|
|
),
|
|
Container(width: double.infinity, height: 10, color: Color.fromRGBO(242, 242, 242, 0.9)),
|
|
ListTile(
|
|
leading: Icon(Icons.favorite, color: Colors.lightGreen),
|
|
title: Text("我的收藏"),
|
|
),
|
|
Divider(),
|
|
ListTile(
|
|
leading: Icon(Icons.people, color: Colors.black54),
|
|
title: Text("在线客服"),
|
|
),
|
|
Divider(),
|
|
this.isLogin
|
|
? Container(
|
|
padding: EdgeInsets.all(20),
|
|
child: JdButton(
|
|
height: ScreenUtil().setSp(300),
|
|
color: Colors.red,
|
|
text: "退出登录",
|
|
onTop: () {
|
|
UserServices.loginOut();
|
|
this._getUserinfo();
|
|
},
|
|
),
|
|
)
|
|
: Text("")
|
|
],
|
|
));
|
|
}
|
|
}
|