Files
zh-chat-flutter/lib/views/user/index/widgets/user_top_bar.dart
2022-10-31 16:12:06 +08:00

125 lines
4.2 KiB
Dart

import 'package:chat/configs/app_colors.dart';
import 'package:chat/routes/user_routes.dart';
import 'package:chat/services/auth_service.dart';
import 'package:chat/utils/convert.dart';
import 'package:chat/utils/ui_tools.dart';
import 'package:chat/widgets/custom_avatar.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:get/get.dart';
class UserTopBar extends StatelessWidget {
const UserTopBar({Key? key}) : super(key: key);
final double paddingTop = 96;
final double paddingBottom = 24;
final double avatarHeight = 64;
@override
Widget build(BuildContext context) {
return Column(
children: [
Container(
color: AppColors.white,
padding: EdgeInsets.only(
left: 24,
top: paddingTop,
right: 24,
bottom: paddingBottom,
),
height: avatarHeight + paddingTop + paddingBottom,
child: GetX<AuthService>(
builder: (_) {
return Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
InkWell(
onTap: () {
Get.toNamed(UserRoutes.info);
},
child: CustomAvatar(
_.userInfo.value.avatar,
size: avatarHeight,
),
),
const SizedBox(width: 16),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
InkWell(
onTap: () {
Get.toNamed(UserRoutes.info);
},
child: Text(
_.userInfo.value.nickname ?? '',
style: const TextStyle(
fontSize: 22,
fontWeight: FontWeight.w400,
),
),
),
Row(
children: [
Text(
Convert.hideCenterStr(
_.userInfo.value.address ?? ''),
style: const TextStyle(
color: AppColors.unactive,
),
),
const SizedBox(width: 4),
InkWell(
onTap: () {
Clipboard.setData(
ClipboardData(
text: _.userInfo.value.address,
),
);
UiTools.toast('地址复制成功');
},
child: const Icon(
Icons.copy,
size: 12,
color: AppColors.unactive,
),
),
],
),
],
),
Expanded(child: Container()),
InkWell(
onTap: () {
Get.toNamed(UserRoutes.qrCode);
},
child: Row(
children: const [
Icon(
Icons.qr_code,
size: 18,
color: AppColors.unactive,
),
SizedBox(width: 8),
Icon(
Icons.arrow_forward_ios,
size: 16,
color: AppColors.unactive,
),
],
),
),
],
);
},
),
),
const Divider(
height: 0,
color: AppColors.border,
),
],
);
}
}