| | |
| | | import 'dart:io'; |
| | | |
| | | import 'package:flutter/cupertino.dart'; |
| | | import 'package:flutter/material.dart'; |
| | | import 'package:flutter/services.dart'; |
| | | import 'package:flutter_boost/flutter_boost.dart'; |
| | | import '../../api/video_api.dart'; |
| | | |
| | | import '../../ui/widget/button.dart'; |
| | | import '../../ui/widget/video_item.dart'; |
| | | import '../../utils/db_manager.dart'; |
| | | import '../../utils/jump_page.dart'; |
| | | import '../../utils/string_util.dart'; |
| | | import '../../utils/ui_constant.dart'; |
| | | import '../../utils/user_util.dart'; |
| | | |
| | | import 'model/user/user_info.dart'; |
| | | import 'model/video/watch_record_model.dart'; |
| | | import 'utils/share_preference.dart'; |
| | | import 'package:share_plus/share_plus.dart'; |
| | | import 'ui/widget/ad_express.dart'; |
| | | import 'ui/widget/images_widget.dart'; |
| | | import 'utils/config_util.dart'; |
| | | |
| | | class MinePage extends StatefulWidget { |
| | | MinePage({Key? key, required this.title}) : super(key: key); |
| | |
| | | |
| | | class _MinePageState extends State<MinePage> |
| | | with SingleTickerProviderStateMixin, PageVisibilityObserver { |
| | | static const Color COLOR_CONTENT = Color(0xFF999999); |
| | | static const Color COLOR_TITLE = Color(0xFF000000); |
| | | static const Color COLOR_PORTRAIT_BG = Color(0xFFDBDBDB); |
| | | static const Color COLOR_HIGHLIGHT = ColorConstant.theme; |
| | | |
| | | int index = 1; |
| | | |
| | | UserInfo? _user; |
| | | List<WatchRecordModel> recordList = []; |
| | | |
| | | int collectedVideoCount = 0; |
| | | int favoriteVideoCount = 0; |
| | | String applink = ""; |
| | | int goldCorn = 0; |
| | | String balance = "0.00"; |
| | | |
| | | int firstTeamCount = 0; |
| | | int secondTeamCount = 0; |
| | | int msgCount = 0; |
| | | |
| | | @override |
| | | void initState() { |
| | | super.initState(); |
| | | if (Platform.isIOS) { |
| | | MySharedPreferences.getInstance().getString("appLink").then((value) { |
| | | setState(() { |
| | | applink = value!; |
| | | }); |
| | | }); |
| | | } |
| | | _refreshData(); |
| | | } |
| | | |
| | | void _refreshData() { |
| | | updateUserInfo(); |
| | | loadWatchRecord(); |
| | | loadUserVideoCount(); |
| | | } |
| | | |
| | | void updateUserInfo() async { |
| | |
| | | return; |
| | | } |
| | | |
| | | _user = await UserUtil.getUserInfo(); |
| | | |
| | | UserUtil.updateUserInfo(context).then((value) { |
| | | print("user:$value"); |
| | | setState(() { |
| | |
| | | }); |
| | | } |
| | | |
| | | void loadWatchRecord() async { |
| | | List<WatchRecordModel> temp = await DBManager.listWatchRecord(1, 20); |
| | | setState(() { |
| | | recordList = temp; |
| | | }); |
| | | } |
| | | |
| | | void loadUserVideoCount() async { |
| | | if (!await UserUtil.isLogin()) { |
| | | void jumpPage(String name, |
| | | {Map<String, dynamic>? params, bool needLogin = true}) async { |
| | | bool login = await UserUtil.isLogin(); |
| | | if (!login && needLogin) { |
| | | jumpPage("LoginPage", needLogin: false); |
| | | return; |
| | | } |
| | | Map<String, dynamic>? result = |
| | | await VideoApiUtil.getUserVideoCount(context); |
| | | if (result == null) { |
| | | return; |
| | | } |
| | | if (result["IsPost"] == "true") { |
| | | setState(() { |
| | | collectedVideoCount = result["Data"]["collectionCount"]; |
| | | favoriteVideoCount = result["Data"]["attentionCount"]; |
| | | }); |
| | | } |
| | | } |
| | | |
| | | void jumpPage(String name, {Map<String, dynamic>? params}) { |
| | | JumpPageUtil.jumpPage(name, context, native: Platform.isIOS,params: params, |
| | | callback: (data) { |
| | | JumpPageUtil.jumpPage(name, context, |
| | | native: Constant.NATIVE, params: params, callback: (data) { |
| | | _refreshData(); |
| | | }); |
| | | } |
| | |
| | | Widget build(BuildContext context) { |
| | | return Scaffold( |
| | | backgroundColor: Colors.white, |
| | | body: Column( |
| | | crossAxisAlignment: CrossAxisAlignment.center, |
| | | mainAxisAlignment: MainAxisAlignment.start, |
| | | children: [ |
| | | Container( |
| | | alignment: Alignment.center, |
| | | padding: EdgeInsets.only( |
| | | top: 15 + MediaQuery.of(context).viewPadding.top, bottom: 15), |
| | | color: ColorConstant.theme, |
| | | child: const Text("我的", |
| | | style: TextStyle(fontSize: 20, color: Colors.white)), |
| | | body: Column(children: [ |
| | | Expanded( |
| | | child: Stack(children: [ |
| | | AspectRatio( |
| | | aspectRatio: 1.344, |
| | | child: Image.asset("assets/imgs/mine/ic_top_bg.png"), |
| | | ), |
| | | Expanded( |
| | | child: Container( |
| | | height: 20, |
| | | color: Colors.white, |
| | | child: SingleChildScrollView( |
| | | child: Column( |
| | | children: [ |
| | | Container( |
| | | height: 51, |
| | | ), |
| | | |
| | | //个人信息 |
| | | InkWell( |
| | | child: Row( |
| | | children: [ |
| | | Container( |
| | | width: 18, |
| | | ), |
| | | portraitWidget(), |
| | | Container( |
| | | width: 10, |
| | | ), |
| | | _user != null |
| | | ? personInfoWidget() |
| | | : |
| | | //登录框 |
| | | loginBtnWidget(), |
| | | Container( |
| | | width: 18, |
| | | ), |
| | | ], |
| | | ), |
| | | onTap: () { |
| | | UserUtil.isLogin().then((value) { |
| | | if (value) { |
| | | jumpPage("PersonInfoPage"); |
| | | } |
| | | }); |
| | | }, |
| | | ), |
| | | Container( |
| | | height: 8, |
| | | ), |
| | | //签名 |
| | | signWidget(), |
| | | Container( |
| | | height: 23, |
| | | ), |
| | | //收藏,追剧,缓存 |
| | | Row( |
| | | mainAxisAlignment: MainAxisAlignment.spaceAround, |
| | | children: [ |
| | | InkWell( |
| | | onTap: () { |
| | | UserUtil.isLogin().then((value) { |
| | | if (!value) { |
| | | jumpPage("EmailLoginPage"); |
| | | return; |
| | | } |
| | | jumpPage("VideoCollectedPage"); |
| | | }); |
| | | }, |
| | | child: Column( |
| | | children: [ |
| | | const Text( |
| | | "收藏", |
| | | style: TextStyle( |
| | | fontSize: 18, color: Color(0xFF888888)), |
| | | ), |
| | | Text( |
| | | "$collectedVideoCount", |
| | | style: const TextStyle( |
| | | fontSize: 12, color: Color(0xFF888888)), |
| | | ), |
| | | ], |
| | | )), |
| | | InkWell( |
| | | onTap: () { |
| | | UserUtil.isLogin().then((value) { |
| | | if (!value) { |
| | | jumpPage("EmailLoginPage"); |
| | | return; |
| | | } |
| | | jumpPage("VideoAttentionPage"); |
| | | }); |
| | | }, |
| | | child: Column( |
| | | children: [ |
| | | const Text( |
| | | "追剧", |
| | | style: TextStyle( |
| | | fontSize: 18, color: Color(0xFF888888)), |
| | | ), |
| | | Text( |
| | | "$favoriteVideoCount", |
| | | style: const TextStyle( |
| | | fontSize: 12, color: Color(0xFF888888)), |
| | | ), |
| | | ], |
| | | ), |
| | | ), |
| | | InkWell( |
| | | onTap: () { |
| | | jumpPage("VideoDownloadPage"); |
| | | }, |
| | | child: Column( |
| | | children: const [ |
| | | Text( |
| | | "缓存", |
| | | style: TextStyle( |
| | | fontSize: 18, color: Color(0xFF888888)), |
| | | ), |
| | | Text( |
| | | "0", |
| | | style: TextStyle( |
| | | fontSize: 12, color: Color(0xFF888888)), |
| | | ), |
| | | ], |
| | | )), |
| | | ], |
| | | ), |
| | | //历史记录 |
| | | Container( |
| | | height: 20, |
| | | ), |
| | | recordList.isNotEmpty |
| | | ? Column( |
| | | children: [ |
| | | //title |
| | | InkWell( |
| | | onTap: () { |
| | | jumpPage("VideoScanRecordPage"); |
| | | }, |
| | | child: Row( |
| | | children: [ |
| | | Container( |
| | | width: 16, |
| | | ), |
| | | const Text( |
| | | "历史记录", |
| | | style: TextStyle( |
| | | color: Color(0xFFAAAAAA), |
| | | fontSize: 15), |
| | | ), |
| | | Expanded(child: Container()), |
| | | const Text( |
| | | "全部", |
| | | style: TextStyle( |
| | | color: Color(0xFFAAAAAA), |
| | | fontSize: 15), |
| | | ), |
| | | Container( |
| | | width: 6, |
| | | ), |
| | | Image.asset( |
| | | "assets/imgs/icon_mine_fun_input.png", |
| | | width: 6.5, |
| | | ), |
| | | Container( |
| | | width: 16, |
| | | ), |
| | | ], |
| | | )), |
| | | //内容 |
| | | Container( |
| | | margin: const EdgeInsets.only(top: 15), |
| | | height: 270, |
| | | child: SingleChildScrollView( |
| | | scrollDirection: Axis.horizontal, |
| | | child: Container( |
| | | constraints: BoxConstraints( |
| | | minWidth: MediaQuery.of(context) |
| | | .size |
| | | .width), |
| | | alignment: Alignment.centerLeft, |
| | | child: Wrap( |
| | | direction: Axis.vertical, |
| | | alignment: WrapAlignment.start, |
| | | spacing: 10, |
| | | runSpacing: 10, |
| | | children: getRecordListWidget()))), |
| | | ) |
| | | ], |
| | | ) |
| | | : Container(), |
| | | |
| | | //功能 |
| | | Container( |
| | | margin: const EdgeInsets.fromLTRB(16, 23, 16, 16), |
| | | padding: const EdgeInsets.fromLTRB(24, 10, 24, 10), |
| | | decoration: BoxDecoration( |
| | | borderRadius: BorderRadius.circular(12.5), |
| | | border: Border.all( |
| | | color: const Color(0xFFDDDDDD), width: 1)), |
| | | child: Column( |
| | | children: [ |
| | | functionWidget( |
| | | "assets/imgs/icon_mine_fun_share.png", "分享APP", 16, |
| | | () { |
| | | Share.share("海量韩剧,尽在应用:$applink"); |
| | | }), |
| | | functionWidget("assets/imgs/icon_mine_fun_privacy.png", |
| | | "隐私政策", 13.5, () { |
| | | jumpPage("BrowserPage", params: {"url": Constant.PRIVACY_URL,"title":"隐私政策"}); |
| | | }), |
| | | functionWidget("assets/imgs/icon_mine_fun_feedback.png", |
| | | "反馈吐槽", 13.5, () { |
| | | jumpPage("AdvicePage"); |
| | | }), |
| | | functionWidget("assets/imgs/icon_mine_fun_about_us.png", |
| | | "关于我们", 17, () { |
| | | MySharedPreferences.getInstance() |
| | | .getString("aboutUsLink") |
| | | .then((value) { |
| | | if (!StringUtil.isNullOrEmpty(value)) { |
| | | jumpPage("AboutUsPage"); |
| | | } |
| | | }); |
| | | }), |
| | | functionWidget("assets/imgs/icon_mine_fun_settings.png", |
| | | "设置", 17.5, () { |
| | | jumpPage("SettingPage"); |
| | | }), |
| | | ], |
| | | ), |
| | | ) |
| | | ], |
| | | )), |
| | | )) |
| | | ], |
| | | )); |
| | | } |
| | | |
| | | List<Widget> getRecordListWidget() { |
| | | List<Widget> list = recordList.map((e) { |
| | | //是否为主分类 |
| | | List<int> mainTypes = [150, 151, 152, 153]; |
| | | if (mainTypes.contains(e.video!.videoType!.id!)) { |
| | | return InkWell( |
| | | child: getBigRecordItem(e), |
| | | onTap: () { |
| | | jumpVideoDetail(context, e.video, Platform.isIOS, |
| | | position: e.position!); |
| | | }, |
| | | ); |
| | | } else { |
| | | return InkWell( |
| | | child: getSmallRecordItem(e), |
| | | onTap: () { |
| | | jumpVideoDetail(context, e.video, Platform.isIOS, |
| | | position: e.position!); |
| | | }, |
| | | ); |
| | | } |
| | | }).toList(); |
| | | list.insert( |
| | | 0, |
| | | InkWell( |
| | | child: Container( |
| | | width: 5, |
| | | height: 270, |
| | | ))); |
| | | list.add(InkWell( |
| | | child: Container( |
| | | width: 5, |
| | | height: 270, |
| | | ))); |
| | | return list; |
| | | } |
| | | |
| | | Widget getSmallRecordItem(WatchRecordModel record) { |
| | | return Container( |
| | | height: 130, |
| | | child: Stack( |
| | | children: [ |
| | | Container( |
| | | margin: const EdgeInsets.only(top: 20), |
| | | height: 110, |
| | | width: 120 * 1.4, |
| | | decoration: BoxDecoration( |
| | | color: Colors.black38, |
| | | borderRadius: BorderRadius.circular(10)), |
| | | ), |
| | | Container( |
| | | alignment: Alignment.center, |
| | | width: 120 * 1.4, |
| | | padding: const EdgeInsets.only(left: 10, right: 10), |
| | | SingleChildScrollView( |
| | | child: Column( |
| | | children: [ |
| | | ClipRRect( |
| | | borderRadius: BorderRadius.circular(10), |
| | | child: SizedBox( |
| | | height: 100, |
| | | width: 120 * 1.4 - 20, |
| | | child: VideoImage(record.video!.picture), |
| | | ), |
| | | ), |
| | | Container( |
| | | height: 5, |
| | | ), |
| | | Text( |
| | | record.video!.name!, |
| | | maxLines: 1, |
| | | overflow: TextOverflow.ellipsis, |
| | | style: const TextStyle(color: Colors.white), |
| | | ) |
| | | ], |
| | | )) |
| | | ], |
| | | )); |
| | | } |
| | | |
| | | Widget getBigRecordItem(WatchRecordModel record) { |
| | | return Stack( |
| | | children: [ |
| | | Container( |
| | | margin: const EdgeInsets.only(top: 20), |
| | | height: 250, |
| | | width: 150, |
| | | decoration: BoxDecoration( |
| | | color: Colors.black38, borderRadius: BorderRadius.circular(10)), |
| | | ), |
| | | Container( |
| | | alignment: Alignment.center, |
| | | width: 150, |
| | | padding: EdgeInsets.only(left: 10, right: 10), |
| | | child: Column( |
| | | crossAxisAlignment: CrossAxisAlignment.start, |
| | | children: [ |
| | | ClipRRect( |
| | | borderRadius: BorderRadius.circular(10), |
| | | child: Container( |
| | | height: 200, |
| | | child: VideoImage( |
| | | record.video!.vpicture ?? record.video!.picture), |
| | | ), |
| | | Container( |
| | | height: 100, |
| | | ), |
| | | Container( |
| | | height: 5, |
| | | ), |
| | | Text( |
| | | record.video!.name!, |
| | | maxLines: 2, |
| | | overflow: TextOverflow.ellipsis, |
| | | style: const TextStyle(color: Colors.white), |
| | | ) |
| | | child: Stack( |
| | | children: [ |
| | | Container( |
| | | alignment: Alignment.bottomRight, |
| | | color: Colors.white, |
| | | padding: EdgeInsets.only(bottom: 10), |
| | | margin: EdgeInsets.only(top: 28), |
| | | child: Column( |
| | | children: [ |
| | | const SizedBox( |
| | | height: 15, |
| | | ), |
| | | Container( |
| | | alignment: Alignment.topCenter, |
| | | color: Colors.white, |
| | | height: 100, |
| | | padding: |
| | | const EdgeInsets.fromLTRB(20, 25, 20, 20), |
| | | child: _user != null |
| | | ? personInfoWidget() |
| | | : |
| | | //登录框 |
| | | loginBtnWidget(), |
| | | ), |
| | | Container( |
| | | color: Colors.white, |
| | | padding: |
| | | const EdgeInsets.only(left: 12, right: 12), |
| | | child: Row( |
| | | mainAxisSize: MainAxisSize.min, |
| | | mainAxisAlignment: |
| | | MainAxisAlignment.spaceAround, |
| | | children: [ |
| | | Expanded( |
| | | child: InkWell( |
| | | onTap: () { |
| | | jumpPage("GoldCornPage"); |
| | | }, |
| | | child: Container( |
| | | alignment: Alignment.centerLeft, |
| | | child: AspectRatio( |
| | | aspectRatio: 2.048, |
| | | child: Stack( |
| | | alignment: Alignment.centerLeft, |
| | | children: [ |
| | | ClipRRect( |
| | | borderRadius: |
| | | BorderRadius.circular( |
| | | 12), |
| | | child: Image.asset( |
| | | "assets/imgs/mine/ic_goldcorn_bg.png")), |
| | | Wrap(children: [ |
| | | const SizedBox( |
| | | width: 14, |
| | | ), |
| | | Text.rich(TextSpan( |
| | | text: "$goldCorn", |
| | | style: const TextStyle( |
| | | color: Colors.white, |
| | | fontSize: 30), |
| | | children: const [ |
| | | TextSpan( |
| | | text: "个", |
| | | style: TextStyle( |
| | | fontSize: 15)) |
| | | ])) |
| | | ]) |
| | | ], |
| | | ), |
| | | ), |
| | | ))), |
| | | const SizedBox( |
| | | width: 13.5, |
| | | ), |
| | | Expanded( |
| | | child: InkWell( |
| | | onTap: () { |
| | | jumpPage("BalancePage"); |
| | | }, |
| | | child: Container( |
| | | alignment: Alignment.centerLeft, |
| | | child: AspectRatio( |
| | | aspectRatio: 2.048, |
| | | child: Stack( |
| | | alignment: Alignment.centerLeft, |
| | | children: [ |
| | | ClipRRect( |
| | | borderRadius: |
| | | BorderRadius.circular( |
| | | 12), |
| | | child: Image.asset( |
| | | "assets/imgs/mine/ic_money_bg.png")), |
| | | Wrap( |
| | | children: [ |
| | | SizedBox( |
| | | width: 14, |
| | | ), |
| | | Text.rich(TextSpan( |
| | | text: balance, |
| | | style: TextStyle( |
| | | color: |
| | | Colors.white, |
| | | fontSize: 30), |
| | | children: [ |
| | | TextSpan( |
| | | text: "元", |
| | | style: TextStyle( |
| | | fontSize: |
| | | 15)) |
| | | ])) |
| | | ], |
| | | ) |
| | | ], |
| | | ), |
| | | ), |
| | | ))), |
| | | ], |
| | | ), |
| | | ), |
| | | //功能 |
| | | Container( |
| | | height: 200, |
| | | margin: const EdgeInsets.fromLTRB(10, 20, 13, 16), |
| | | padding: |
| | | const EdgeInsets.fromLTRB(10, 10, 10, 10), |
| | | decoration: BoxDecoration( |
| | | color: Color(0xFFFAFAFA), |
| | | borderRadius: BorderRadius.circular(13)), |
| | | child: GridView( |
| | | padding: EdgeInsets.zero, |
| | | gridDelegate: |
| | | const SliverGridDelegateWithFixedCrossAxisCount( |
| | | crossAxisCount: 4, mainAxisSpacing: 10), |
| | | physics: const NeverScrollableScrollPhysics(), |
| | | children: [ |
| | | functionWidget( |
| | | "assets/imgs/mine/ic_fun_invite.png", |
| | | "邀请好友", |
| | | 28.5, () { |
| | | jumpPage("InviteFriendsPage"); |
| | | }), |
| | | functionWidget( |
| | | "assets/imgs/mine/ic_fun_help.png", |
| | | "帮助中心", |
| | | 27, () { |
| | | ConfigUtil.getConfig(context, "helpLink") |
| | | .then((value) { |
| | | jumpPage("BrowserPage", |
| | | params: { |
| | | "url": value, |
| | | "title": "帮助中心" |
| | | }, |
| | | needLogin: false); |
| | | }); |
| | | }), |
| | | functionWidget( |
| | | "assets/imgs/mine/ic_fun_kefu.png", |
| | | "在线客服", |
| | | 28.5, () { |
| | | ConfigUtil.getConfig(context, "kefu") |
| | | .then((value) { |
| | | jumpPage("BrowserPage", |
| | | params: {"url": value, "title": "客服"}, |
| | | needLogin: false); |
| | | }); |
| | | }), |
| | | functionWidget( |
| | | "assets/imgs/mine/ic_fun_about_us.png", |
| | | "关于我们", |
| | | 25, () { |
| | | // MySharedPreferences.getInstance() |
| | | // .getString("aboutUsLink") |
| | | // .then((value) { |
| | | // if (!StringUtil.isNullOrEmpty(value)) { |
| | | jumpPage("AboutUsPage", needLogin: false); |
| | | // } |
| | | // }); |
| | | }), |
| | | functionWidget( |
| | | "assets/imgs/mine/ic_fun_settings.png", |
| | | "设置", |
| | | 24.5, () { |
| | | jumpPage("SettingPage", needLogin: false); |
| | | }), |
| | | ], |
| | | ), |
| | | ), |
| | | |
| | | Container( |
| | | margin: |
| | | const EdgeInsets.only(left: 12, right: 12), |
| | | width: MediaQuery.of(context).size.width - 12 * 2, |
| | | height: |
| | | (MediaQuery.of(context).size.width - 12 * 2) * |
| | | 0.6, |
| | | alignment: Alignment.center, |
| | | child: CSJEXpressAd( |
| | | "948486374", |
| | | MediaQuery.of(context).size.width - 12 * 2, |
| | | (MediaQuery.of(context).size.width - 12 * 2) * |
| | | 0.6), |
| | | ) |
| | | ], |
| | | )), |
| | | Container( |
| | | margin: EdgeInsets.only(left: 25), |
| | | child: portraitWidget(), |
| | | ) |
| | | ], |
| | | )), |
| | | ], |
| | | )) |
| | | ], |
| | | ); |
| | | )), |
| | | ])) |
| | | ])); |
| | | } |
| | | |
| | | Widget portraitWidget() { |
| | | return Container( |
| | | width: 80, |
| | | height: 80, |
| | | padding: const EdgeInsets.all(2), |
| | | alignment: Alignment.center, |
| | | decoration: BoxDecoration( |
| | | color: const Color(0xFFAAAAAA), |
| | | borderRadius: BorderRadius.circular(40)), |
| | | child: ClipRRect( |
| | | borderRadius: BorderRadius.circular(40), |
| | | child: CommonImage( |
| | | _user == null |
| | | ? "assets/imgs/ic_portrait_default.png" |
| | | : _user!.portrait!, |
| | | defaultWidget: |
| | | Image.asset("assets/imgs/ic_portrait_default.png")), |
| | | )); |
| | | return InkWell( |
| | | onTap: () { |
| | | if (_user != null) { |
| | | jumpPage("PersonInfoPage"); |
| | | } |
| | | }, |
| | | child: Container( |
| | | width: 81, |
| | | height: 81, |
| | | padding: const EdgeInsets.all(4), |
| | | alignment: Alignment.center, |
| | | decoration: BoxDecoration( |
| | | color: Colors.white, borderRadius: BorderRadius.circular(40)), |
| | | child: ClipRRect( |
| | | borderRadius: BorderRadius.circular(40), |
| | | child: _user == null |
| | | ? Container( |
| | | color: COLOR_PORTRAIT_BG, |
| | | alignment: Alignment.center, |
| | | child: Image.asset( |
| | | "assets/imgs/mine/icon_no_login_portrait.png", |
| | | height: 39, |
| | | ), |
| | | ) |
| | | : CommonImage( |
| | | (_user == null || _user!.portrait == null) |
| | | ? "assets/imgs/ic_portrait_default.png" |
| | | : _user!.portrait!, |
| | | defaultWidget: |
| | | Image.asset("assets/imgs/ic_portrait_default.png")), |
| | | ))); |
| | | } |
| | | |
| | | Widget loginBtnWidget() { |
| | | return MyFillButton( |
| | | "立即登录", |
| | | 12.5, |
| | | width: 138, |
| | | fontSize: 14, |
| | | onClick: () { |
| | | jumpPage("EmailLoginPage"); |
| | | }, |
| | | ); |
| | | return MyFillButton("登录", 13, width: 230, fontSize: 15, height: 41, |
| | | onClick: () { |
| | | jumpPage("LoginPage", needLogin: false); |
| | | }, color: COLOR_HIGHLIGHT); |
| | | } |
| | | |
| | | Widget personInfoWidget() { |
| | | print("用户信息:${_user!.toJson()}"); |
| | | return Column( |
| | | crossAxisAlignment: CrossAxisAlignment.start, |
| | | children: [ |
| | | Text(_user!.nickname!, |
| | | maxLines: 1, |
| | | overflow: TextOverflow.ellipsis, |
| | | style: const TextStyle( |
| | | fontSize: 18, |
| | | color: ColorConstant.theme, |
| | | fontSize: 21, |
| | | color: COLOR_TITLE, |
| | | )), |
| | | Container( |
| | | height: 6, |
| | | ), |
| | | Text("ID:${_user!.id!}", |
| | | style: const TextStyle( |
| | | fontSize: 15, |
| | | color: Color(0xFFA9A9A9), |
| | | )), |
| | | ], |
| | | ); |
| | | } |
| | | |
| | | Widget signWidget() { |
| | | return Container( |
| | | padding: const EdgeInsets.only(top: 21.5, left: 12.5, right: 12.5), |
| | | decoration: BoxDecoration( |
| | | gradient: LinearGradient( |
| | | begin: Alignment.topCenter, |
| | | end: Alignment.bottomCenter, |
| | | colors: [ |
| | | ColorConstant.theme.withAlpha(0), |
| | | ColorConstant.theme.withAlpha(108), |
| | | Widget userContent(int number, String content, VoidCallback click, |
| | | {color: COLOR_CONTENT}) { |
| | | return InkWell( |
| | | onTap: () { |
| | | click(); |
| | | }, |
| | | child: Column( |
| | | mainAxisAlignment: MainAxisAlignment.end, |
| | | crossAxisAlignment: CrossAxisAlignment.center, |
| | | children: [ |
| | | Text( |
| | | "$number", |
| | | style: TextStyle(color: color, fontSize: 18), |
| | | ), |
| | | Text( |
| | | content, |
| | | style: TextStyle(color: color, fontSize: 10), |
| | | ) |
| | | ], |
| | | ), |
| | | ), |
| | | child: Container( |
| | | height: 64, |
| | | padding: const EdgeInsets.only(left: 23, right: 23), |
| | | alignment: Alignment.centerLeft, |
| | | decoration: const BoxDecoration( |
| | | color: ColorConstant.theme, |
| | | borderRadius: BorderRadius.only( |
| | | topLeft: Radius.circular(15), topRight: Radius.circular(15))), |
| | | child: Text( |
| | | "个性签名:${(_user == null || _user!.sign == null || _user!.sign!.isEmpty) ? "这个人非常有趣,但是什么也没写~" : _user!.sign}", |
| | | maxLines: 3, |
| | | overflow: TextOverflow.ellipsis, |
| | | style: const TextStyle(fontSize: 12, color: Colors.white), |
| | | ), |
| | | ), |
| | | ); |
| | | )); |
| | | } |
| | | |
| | | Widget functionWidget( |
| | |
| | | click(); |
| | | }, |
| | | child: Container( |
| | | padding: const EdgeInsets.only(top: 15, bottom: 15), |
| | | child: Row( |
| | | padding: const EdgeInsets.only(top: 15, bottom: 14), |
| | | child: Column( |
| | | crossAxisAlignment: CrossAxisAlignment.center, |
| | | mainAxisAlignment: MainAxisAlignment.center, |
| | | children: [ |
| | | Image.asset( |
| | | icon, |
| | | width: width, |
| | | ), |
| | | Container( |
| | | width: 20, |
| | | alignment: Alignment.center, |
| | | child: Image.asset( |
| | | icon, |
| | | width: width, |
| | | )), |
| | | Container( |
| | | width: 10, |
| | | height: 10, |
| | | ), |
| | | Text( |
| | | text, |
| | | style: const TextStyle(color: Color(0xFFAAAAAA), fontSize: 15), |
| | | ), |
| | | Expanded(child: Container()), |
| | | Image.asset( |
| | | "assets/imgs/icon_mine_fun_input.png", |
| | | width: 6.5, |
| | | ), |
| | | style: const TextStyle(color: COLOR_CONTENT, fontSize: 12), |
| | | ) |
| | | ], |
| | | )), |
| | | ); |