用户中心调整
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import 'package:chat/configs/app_colors.dart';
|
||||
import 'package:chat/configs/themes.dart';
|
||||
import 'package:chat/controllers/group_controller.dart';
|
||||
import 'package:chat/controllers/moment_controller.dart';
|
||||
@@ -8,11 +9,19 @@ import 'package:chat/services/auth_service.dart';
|
||||
import 'package:chat/services/tabbar_service.dart';
|
||||
import 'package:chat/services/tim_service.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:get_storage/get_storage.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
/// 设置状态栏样式,透明
|
||||
SystemUiOverlayStyle style = const SystemUiOverlayStyle(
|
||||
statusBarColor: AppColors.transparent,
|
||||
systemNavigationBarColor: AppColors.nav,
|
||||
);
|
||||
SystemChrome.setSystemUIOverlayStyle(style);
|
||||
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
await GetStorage.init();
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
import 'package:chat/middleware/auth_middleware.dart';
|
||||
import 'package:chat/views/contact/index/index_page.dart';
|
||||
import 'package:chat/views/user/info/avatar_page.dart';
|
||||
import 'package:chat/views/user/info/index_page.dart';
|
||||
import 'package:chat/views/user/info/nickname_page.dart';
|
||||
import 'package:chat/views/user/qr_code/index_page.dart';
|
||||
import 'package:chat/views/user/safe/index_page.dart';
|
||||
import 'package:chat/views/user/setting/index_page.dart';
|
||||
import 'package:chat/views/user/share/index_page.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
abstract class UserRoutes {
|
||||
@@ -10,6 +15,10 @@ abstract class UserRoutes {
|
||||
static const String qrCode = '/user/qrCode';
|
||||
static const String setting = '/user/setting';
|
||||
static const String share = '/user/share';
|
||||
static const String safe = '/user/safe';
|
||||
static const String info = '/user/info';
|
||||
static const String infoNickname = '/user/info/nickname';
|
||||
static const String infoAvatar = '/user/info/avatar';
|
||||
|
||||
static GetPage router = GetPage(
|
||||
name: UserRoutes.index,
|
||||
@@ -18,6 +27,10 @@ abstract class UserRoutes {
|
||||
],
|
||||
page: () => const ContactPage(),
|
||||
children: [
|
||||
GetPage(
|
||||
name: '/share',
|
||||
page: () => const UserSharePage(),
|
||||
),
|
||||
GetPage(
|
||||
name: '/qrCode',
|
||||
page: () => const UserQrCodePage(),
|
||||
@@ -26,6 +39,24 @@ abstract class UserRoutes {
|
||||
name: '/setting',
|
||||
page: () => const UserSettingPage(),
|
||||
),
|
||||
GetPage(
|
||||
name: '/safe',
|
||||
page: () => const UserSafePage(),
|
||||
),
|
||||
GetPage(
|
||||
name: '/info',
|
||||
page: () => const UserInfoPage(),
|
||||
children: [
|
||||
GetPage(
|
||||
name: '/nickname',
|
||||
page: () => const UserInfoNicknamePage(),
|
||||
),
|
||||
GetPage(
|
||||
name: '/avatar',
|
||||
page: () => const UserInfoAvatarPage(),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ class AuthService extends GetxService {
|
||||
}
|
||||
|
||||
/// 退出登录
|
||||
void logout() async {
|
||||
Future<void> logout() async {
|
||||
await TencentImSDKPlugin.v2TIMManager.logout();
|
||||
_box.remove('userSig');
|
||||
_box.remove('userId');
|
||||
|
||||
@@ -93,6 +93,7 @@ class TimService extends GetxService {
|
||||
|
||||
if (loginResult.code != 0) {
|
||||
UiTools.toast(loginResult.desc);
|
||||
await AuthService.to.logout();
|
||||
}
|
||||
|
||||
Get.put(TimConversationService());
|
||||
|
||||
@@ -197,7 +197,7 @@ class ImTools {
|
||||
padding: const EdgeInsets.only(
|
||||
left: 16.0,
|
||||
),
|
||||
color: Colors.grey[200],
|
||||
color: AppColors.page,
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text(
|
||||
tag,
|
||||
|
||||
@@ -50,7 +50,7 @@ class HomePage extends StatelessWidget {
|
||||
|
||||
PreferredSizeWidget _appBar() {
|
||||
return AppBar(
|
||||
title: const Text('聊聊'),
|
||||
title: const Text('消息'),
|
||||
actions: [
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
|
||||
@@ -2,7 +2,7 @@ import 'package:chat/configs/app_colors.dart';
|
||||
import 'package:chat/services/tabbar_service.dart';
|
||||
import 'package:chat/views/contact/index/index_page.dart';
|
||||
import 'package:chat/views/home/index_page.dart';
|
||||
import 'package:chat/views/user/index/user_page.dart';
|
||||
import 'package:chat/views/user/index/index_page.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:proste_indexed_stack/proste_indexed_stack.dart';
|
||||
|
||||
80
lib/views/user/index/index_page.dart
Normal file
80
lib/views/user/index/index_page.dart
Normal file
@@ -0,0 +1,80 @@
|
||||
import 'package:chat/configs/app_colors.dart';
|
||||
import 'package:chat/routes/user_routes.dart';
|
||||
import 'package:chat/views/home/widgets/action_item.dart';
|
||||
import 'package:chat/views/user/index/widgets/user_top_bar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class UserPage extends StatefulWidget {
|
||||
const UserPage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_UserPageState createState() => _UserPageState();
|
||||
}
|
||||
|
||||
class _UserPageState extends State<UserPage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SafeArea(
|
||||
child: Scaffold(
|
||||
body: Column(
|
||||
children: [
|
||||
const UserTopBar(),
|
||||
const Divider(
|
||||
height: 0,
|
||||
color: AppColors.border,
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
const Divider(
|
||||
height: 0,
|
||||
color: AppColors.border,
|
||||
),
|
||||
ActionItem(
|
||||
'分享邀请',
|
||||
onTap: () {
|
||||
Get.toNamed(UserRoutes.share);
|
||||
},
|
||||
),
|
||||
const Divider(
|
||||
height: 0,
|
||||
color: AppColors.border,
|
||||
indent: 16,
|
||||
),
|
||||
ActionItem(
|
||||
'安全设置',
|
||||
onTap: () {
|
||||
Get.toNamed(UserRoutes.safe);
|
||||
},
|
||||
),
|
||||
const Divider(
|
||||
height: 0,
|
||||
color: AppColors.border,
|
||||
indent: 16,
|
||||
),
|
||||
ActionItem(
|
||||
'设置中心',
|
||||
onTap: () {
|
||||
Get.toNamed(UserRoutes.setting);
|
||||
},
|
||||
),
|
||||
const Divider(
|
||||
height: 0,
|
||||
color: AppColors.border,
|
||||
indent: 16,
|
||||
),
|
||||
ActionItem(
|
||||
'检查更新',
|
||||
onTap: () {
|
||||
Get.toNamed(UserRoutes.setting);
|
||||
},
|
||||
),
|
||||
const Divider(
|
||||
height: 0,
|
||||
color: AppColors.border,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
import 'package:chat/routes/user_routes.dart';
|
||||
import 'package:chat/views/user/index/widgets/user_top_bar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class UserPage extends StatefulWidget {
|
||||
const UserPage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_UserPageState createState() => _UserPageState();
|
||||
}
|
||||
|
||||
class _UserPageState extends State<UserPage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SafeArea(
|
||||
child: Scaffold(
|
||||
body: Column(
|
||||
children: [
|
||||
const UserTopBar(),
|
||||
const SizedBox(height: 8),
|
||||
ListTile(
|
||||
onTap: () {
|
||||
Get.toNamed(UserRoutes.share);
|
||||
},
|
||||
title: const Text('分享邀请'),
|
||||
),
|
||||
ListTile(
|
||||
onTap: () {
|
||||
Get.toNamed(UserRoutes.setting);
|
||||
},
|
||||
title: const Text('设置中心'),
|
||||
),
|
||||
const ListTile(
|
||||
title: Text('检查更新'),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -24,9 +24,14 @@ class UserTopBar extends StatelessWidget {
|
||||
return Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
CustomAvatar(
|
||||
_.userInfo.value.avatar,
|
||||
size: 64,
|
||||
InkWell(
|
||||
onTap: () {
|
||||
Get.toNamed(UserRoutes.info);
|
||||
},
|
||||
child: CustomAvatar(
|
||||
_.userInfo.value.avatar,
|
||||
size: 64,
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 16),
|
||||
Column(
|
||||
|
||||
15
lib/views/user/info/avatar_page.dart
Normal file
15
lib/views/user/info/avatar_page.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class UserInfoAvatarPage extends StatefulWidget {
|
||||
const UserInfoAvatarPage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<UserInfoAvatarPage> createState() => _UserInfoAvatarPageState();
|
||||
}
|
||||
|
||||
class _UserInfoAvatarPageState extends State<UserInfoAvatarPage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container();
|
||||
}
|
||||
}
|
||||
19
lib/views/user/info/index_page.dart
Normal file
19
lib/views/user/info/index_page.dart
Normal file
@@ -0,0 +1,19 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class UserInfoPage extends StatefulWidget {
|
||||
const UserInfoPage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<UserInfoPage> createState() => _UserInfoPageState();
|
||||
}
|
||||
|
||||
class _UserInfoPageState extends State<UserInfoPage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('用户资料'),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
15
lib/views/user/info/nickname_page.dart
Normal file
15
lib/views/user/info/nickname_page.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class UserInfoNicknamePage extends StatefulWidget {
|
||||
const UserInfoNicknamePage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<UserInfoNicknamePage> createState() => _UserInfoNicknamePageState();
|
||||
}
|
||||
|
||||
class _UserInfoNicknamePageState extends State<UserInfoNicknamePage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container();
|
||||
}
|
||||
}
|
||||
20
lib/views/user/safe/index_page.dart
Normal file
20
lib/views/user/safe/index_page.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class UserSafePage extends StatefulWidget {
|
||||
const UserSafePage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<UserSafePage> createState() => _UserSafePageState();
|
||||
}
|
||||
|
||||
class _UserSafePageState extends State<UserSafePage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('安全设置'),
|
||||
),
|
||||
body: Container(),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user