bytedesk_kefu/bytedesk_demo/lib/page/user_info_page.dart

144 lines
4.2 KiB

2 years ago
import 'package:bytedesk_kefu/bytedesk_kefu.dart';
import 'package:bytedesk_kefu/util/bytedesk_constants.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
// 需要首先调用anonymousLogin之后再调用此接口
// 自定义用户信息接口-对接APP用户信息
class UserInfoPage extends StatefulWidget {
const UserInfoPage({Key? key}) : super(key: key);
@override
_UserInfoPageState createState() => _UserInfoPageState();
}
class _UserInfoPageState extends State<UserInfoPage> {
String _uid = ''; // 用户唯一uid
String _username = ''; // 用户唯一用户名
String _nickname = ''; // 用户昵称
String _avatar = BytedeskConstants.DEFAULT_AVATA; // 用户头像
String _description = ''; // 用户备注
@override
void initState() {
_getProfile();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('用户信息'),
elevation: 0,
),
body: ListView(
children: ListTile.divideTiles(
context: context,
tiles: [
ListTile(
title: const Text('唯一uid'),
subtitle: Text(_uid),
),
ListTile(
title: const Text('用户名'),
subtitle: Text(_username),
),
ListTile(
title: const Text('设置昵称(见代码)'),
subtitle: Text(_nickname),
onTap: () {
//
_setNickname();
},
),
ListTile(
leading: Image.network(
_avatar,
height: 30,
width: 30,
),
title: const Text('设置头像(见代码)'),
onTap: () {
//
_setAvatar();
},
),
ListTile(
title: const Text('设置备注(见代码)'),
subtitle: Text(_description),
onTap: () {
//
_setDescription();
},
),
],
).toList()),
);
}
void _getProfile() {
// 查询当前用户信息:昵称、头像
BytedeskKefu.getProfile().then((user) => {
setState(() {
_uid = user.uid!;
_username = user.username!;
_nickname = user.nickname!;
_avatar = user.avatar!;
_description = user.description!;
})
});
}
void _setNickname() {
// 可自定义用户昵称-客服端可见
String mynickname = '自定义APP昵称flutter';
BytedeskKefu.updateNickname(mynickname).then((user) => {
setState(() {
_nickname = mynickname;
}),
Fluttertoast.showToast(msg: "设置昵称成功")
});
}
void _setAvatar() {
// 可自定义用户头像url-客服端可见,注意:是头像网址,非本地图片路径
String myavatarurl =
'https://chainsnow.oss-cn-shenzhen.aliyuncs.com/avatars/visitor_default_avatar.png'; // 头像网址url
BytedeskKefu.updateAvatar(myavatarurl).then((user) => {
setState(() {
_avatar = myavatarurl;
}),
Fluttertoast.showToast(msg: "设置头像成功")
});
}
void _setDescription() {
// 可自定义用户昵称-客服端可见
String description = '自定义用户备注';
BytedeskKefu.updateDescription(description).then((user) => {
setState(() {
_description = description;
}),
Fluttertoast.showToast(msg: "设置备注成功")
});
}
// 一次调用接口,同时设置:昵称、头像、备注
void _updateProfile() {
//
String mynickname = '自定义APP昵称flutter';
String myavatarurl =
'https://bytedesk.oss-cn-shenzhen.aliyuncs.com/avatars/girl.png'; // 头像网址url
String mydescription = '自定义用户备注';
BytedeskKefu.updateProfile(mynickname, myavatarurl, mydescription)
.then((user) => {
setState(() {
_nickname = mynickname;
_avatar = myavatarurl;
_description = mydescription;
}),
Fluttertoast.showToast(msg: "设置成功")
});
}
}