diff --git a/assets/images/ic_vip.png b/assets/images/ic_vip.png new file mode 100644 index 0000000..f090db6 --- /dev/null +++ b/assets/images/ic_vip.png diff --git a/lib/common/core/assets_const.dart b/lib/common/core/assets_const.dart new file mode 100644 index 0000000..bdaa341 --- /dev/null +++ b/lib/common/core/assets_const.dart @@ -0,0 +1,5 @@ +class AssetsConst { + static const String _assetImagePrefix = "assets/images/"; + static const String wowLogo = "wow_logo.png"; + static const String icVip = "ic_vip.png"; +} diff --git a/lib/common/core/const.dart b/lib/common/core/sp_const.dart index 608f51f..608f51f 100644 --- a/lib/common/core/const.dart +++ b/lib/common/core/sp_const.dart diff --git a/lib/common/core/user_util.dart b/lib/common/core/user_util.dart index 08fc988..747490d 100644 --- a/lib/common/core/user_util.dart +++ b/lib/common/core/user_util.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; -import 'package:wow_english/common/core/const.dart'; +import 'package:wow_english/common/core/sp_const.dart'; import 'package:wow_english/models/user_entity.dart'; import 'package:wow_english/route/route.dart'; import 'package:wow_english/utils/sp_util.dart'; diff --git a/lib/common/request/request_client.dart b/lib/common/request/request_client.dart index 89961f2..dded184 100644 --- a/lib/common/request/request_client.dart +++ b/lib/common/request/request_client.dart @@ -17,7 +17,7 @@ class RequestClient { RequestClient() { _dio = Dio(BaseOptions(baseUrl: RequestConfig.baseUrl, connectTimeout: RequestConfig.connectTimeout)); _dio.interceptors.add(TokenInterceptor()); - _dio.interceptors.add(PrettyDioLogger(requestHeader: true, requestBody: true, responseHeader: true)); + _dio.interceptors.add(PrettyDioLogger(requestHeader: true, requestBody: true)); } Future request( diff --git a/lib/models/user_entity.dart b/lib/models/user_entity.dart index 6efa7bd..b6aa797 100644 --- a/lib/models/user_entity.dart +++ b/lib/models/user_entity.dart @@ -7,9 +7,10 @@ import 'package:wow_english/generated/json/user_entity.g.dart'; class UserEntity { late int id; late String name; - late int age; - late int gender; - late String avatarUrl; + late int? age; + /// 性别:0, 1 + late int? gender; + late String? avatarUrl; late String phoneNum; late String token; late int expireTime; diff --git a/lib/pages/user/user_page.dart b/lib/pages/user/user_page.dart index a0a107d..d6c2374 100644 --- a/lib/pages/user/user_page.dart +++ b/lib/pages/user/user_page.dart @@ -1,21 +1,89 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:wow_english/common/blocs/cachebloc/cache_bloc.dart'; +import 'package:wow_english/common/core/assets_const.dart'; +import 'package:wow_english/common/extension/string_extension.dart'; import 'package:wow_english/common/widgets/we_app_bar.dart'; import 'package:wow_english/models/user_entity.dart'; +import 'package:wow_english/pages/user/bloc/user_bloc.dart'; class UserPage extends StatelessWidget { const UserPage({super.key}); @override Widget build(BuildContext context) { + return BlocProvider( + create: (context) => UserBloc(), + child: _UserView(), + ); + } +} + +class _UserView extends StatelessWidget { + const _UserView({super.key}); + + @override + Widget build(BuildContext context) { UserEntity? user = context.read().userEntity; return Scaffold( - backgroundColor: Colors.white, - appBar: WEAppBar( - titleText: user?.name ?? '????', - ), - body: Row(), + backgroundColor: Colors.white, + appBar: WEAppBar( + // 测试用的 + titleText: user?.name ?? '个人中心', + ), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + child: Image.asset(AssetsConst.wowLogo.assetImg), constraints: BoxConstraints(maxHeight: 196.h)), + _userInfo(context), + ], + ), + )); + } + + Widget _userInfo(BuildContext context) { + return Row( + children: [ + Image.asset( + AssetsConst.wowLogo.assetImg, + width: 80, + height: 80, + ), + Column( + children: [ + Row( + children: [ + Text( + context.read().userEntity?.name ?? '----', + style: TextStyle( + color: const Color(0xFF333333), + fontSize: 21.sp, + ), + ), + //Text(context.read().userEntity?.gender ?? '--'), + Image.asset( + AssetsConst.wowLogo.assetImg, + height: 18.h, + ), + ], + ), + Row( + children: [ + Text( + "什么时候到期", + style: TextStyle( + color: const Color(0xFFE11212), + fontSize: 17.sp, + ), + ) + ], + ) + ], + ), + ], ); } }