diff --git a/lib/models/space/tab.g.dart b/lib/models/space/tab.g.dart index 311023cb..584c5754 100644 --- a/lib/models/space/tab.g.dart +++ b/lib/models/space/tab.g.dart @@ -16,7 +16,7 @@ Tab _$TabFromJson(Map json) => Tab( coin: json['coin'] as bool?, like: json['like'] as bool?, community: json['community'] as bool?, - dyn: json['dynamic'] as bool?, + dyn: false, //json['dynamic'] as bool?, audios: json['audios'] as bool?, shop: json['shop'] as bool?, mall: json['mall'] as bool?, diff --git a/lib/pages/member/new/content/member_contribute/content/video/member_video.dart b/lib/pages/member/new/content/member_contribute/content/video/member_video.dart index 3ec4e0b7..86c330a7 100644 --- a/lib/pages/member/new/content/member_contribute/content/video/member_video.dart +++ b/lib/pages/member/new/content/member_contribute/content/video/member_video.dart @@ -53,7 +53,7 @@ class _MemberVideoState extends State } _buildBody(LoadingState loadingState) { - return loadingState is Success + return loadingState is Success && loadingState.response is List ? RefreshIndicator( onRefresh: () async { await _controller.onRefresh(); @@ -137,20 +137,22 @@ class _MemberVideoState extends State ], ), ) - : loadingState is Error + : loadingState is Loading ? Center( + child: CircularProgressIndicator(), + ) + : Center( child: CustomScrollView( shrinkWrap: true, slivers: [ HttpError( - errMsg: loadingState.errMsg, + errMsg: loadingState is Error + ? (loadingState as Error?)?.errMsg + : 'EMPTY', fn: _controller.onReload, ), ], ), - ) - : Center( - child: CircularProgressIndicator(), ); } } diff --git a/lib/pages/member/new/content/member_home/member_home.dart b/lib/pages/member/new/content/member_home/member_home.dart index ca488000..13018e0a 100644 --- a/lib/pages/member/new/content/member_home/member_home.dart +++ b/lib/pages/member/new/content/member_home/member_home.dart @@ -10,6 +10,7 @@ import 'package:PiliPalaX/pages/member/new/content/member_contribute/member_cont import 'package:PiliPalaX/pages/member/new/controller.dart'; import 'package:PiliPalaX/utils/grid.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; class MemberHome extends StatefulWidget { @@ -70,6 +71,33 @@ class _MemberHomeState extends State ), ), ], + if (loadingState.response?.favourite2?.item?.isNotEmpty == + true) ...[ + _videoHeader( + title: '收藏', + param: 'favorite', + count: loadingState.response.favourite2.count, + ), + // TODO + ], + if (loadingState.response?.coinArchive?.item?.isNotEmpty == + true) ...[ + _videoHeader( + title: '最近投币的视频', + param: 'coinArchive', + count: loadingState.response.coinArchive.count, + ), + // TODO + ], + if (loadingState.response?.likeArchive?.item?.isNotEmpty == + true) ...[ + _videoHeader( + title: '最近点赞的视频', + param: 'coinArchive', + count: loadingState.response.likeArchive.count, + ), + // TODO + ], if (loadingState.response?.article?.item?.isNotEmpty == true) ...[ _videoHeader( title: '专栏', @@ -159,27 +187,30 @@ class _MemberHomeState extends State onTap: () { int index = _ctr.tab2!.indexWhere((item) => item.param == param); - if (['video', 'article', 'audio'].contains(param1)) { - List items = _ctr.tab2! - .firstWhere((item) => item.param == param) - .items!; - int index1 = - items.indexWhere((item) => item.param == param1); - try { - final contributeCtr = - Get.find(tag: widget.heroTag); - // contributeCtr.tabController?.animateTo(index1); - if (contributeCtr.tabController?.index != index1) { - contributeCtr.tabController?.index = index1; - } - print('initialized'); - } catch (e) { - _ctr.contributeInitialIndex.value = index1; - print('not initialized'); - } - } if (index != -1) { + if (['video', 'article', 'audio'].contains(param1)) { + List items = _ctr.tab2! + .firstWhere((item) => item.param == param) + .items!; + int index1 = + items.indexWhere((item) => item.param == param1); + try { + final contributeCtr = + Get.find(tag: widget.heroTag); + // contributeCtr.tabController?.animateTo(index1); + if (contributeCtr.tabController?.index != index1) { + contributeCtr.tabController?.index = index1; + } + print('initialized'); + } catch (e) { + _ctr.contributeInitialIndex.value = index1; + print('not initialized'); + } + } _ctr.tabController.animateTo(index); + } else { + // TODO + SmartDialog.showToast('view $param'); } }, child: Text.rich( diff --git a/lib/pages/member/new/controller.dart b/lib/pages/member/new/controller.dart index ecf1ca33..fc3862e3 100644 --- a/lib/pages/member/new/controller.dart +++ b/lib/pages/member/new/controller.dart @@ -39,26 +39,25 @@ class MemberControllerNew extends CommonController relation.value = response.response?.relation ?? 1; tab2 = response.response.tab2; if (tab2 != null && tab2!.isNotEmpty) { - int initialIndex = tab2! - .indexWhere((item) => item.param == response.response.defaultTab); - if (initialIndex == 0 && - !response.response.tab.toJson().values.contains('true')) { - if (tab2!.length > 1) { - initialIndex = 1; - } - // TODO - // tab2!.removeAt(0); + if (!response.response.tab.toJson().values.contains(true) && + tab2!.first.param == 'home') { + // remove empty home tab + tab2!.removeAt(0); + } + if (tab2!.isNotEmpty) { + if (response.response.defaultTab == 'video') { + response.response.defaultTab = 'dynamic'; + } + int initialIndex = tab2!.indexWhere((item) { + return item.param == response.response.defaultTab; + }); + tabs = tab2!.map((item) => Tab(text: item.title ?? '')).toList(); + tabController = TabController( + vsync: this, + length: response.response.tab2.length, + initialIndex: initialIndex == -1 ? 0 : initialIndex, + ); } - tabs = tab2!.map((item) => Tab(text: item.title ?? '')).toList(); - tabController = TabController( - vsync: this, - length: response.response.tab2.length, - initialIndex: initialIndex == -1 - ? tab2!.length > 1 - ? 1 - : 0 - : initialIndex, - ); } loadingState.value = response; return true; diff --git a/lib/pages/member/new/member_page.dart b/lib/pages/member/new/member_page.dart index d46df38f..92791aed 100644 --- a/lib/pages/member/new/member_page.dart +++ b/lib/pages/member/new/member_page.dart @@ -67,8 +67,7 @@ class _MemberPageNewState extends State ), ]; }, - body: _userController.tab2 != null && - _userController.tab2!.isNotEmpty + body: _userController.tab2?.isNotEmpty == true ? LayoutBuilder( builder: (context, _) { return Padding( @@ -103,8 +102,16 @@ class _MemberPageNewState extends State child: Column( children: [ SizedBox(height: _userController.top), - _buildTab, - Expanded(child: _buildBody), + if ((_userController.tab2?.length ?? -1) > 1) + _buildTab, + Expanded( + child: + _userController.tab2?.isNotEmpty == true + ? _buildBody + : Center( + child: const Text('EMPTY'), + ), + ), ], ), ), @@ -172,9 +179,7 @@ class _MemberPageNewState extends State pinned: true, scrolledUnderElevation: 0, flexibleSpace: _buildUserInfo(_userController.loadingState.value), - bottom: needTab && - _userController.tab2 != null && - _userController.tab2!.isNotEmpty + bottom: needTab && (_userController.tab2?.length ?? -1) > 1 ? PreferredSize( preferredSize: Size.fromHeight(48), child: Material( @@ -293,12 +298,16 @@ class _MemberPageNewState extends State return _errorWidget(userState.errMsg); case Success(): return Obx( - () => UserInfoCard( - relation: _userController.relation.value, - isFollow: _userController.isFollow.value, - card: userState.response.card, - images: userState.response.images, - onFollow: () => _userController.onFollow(context), + () => Padding( + padding: EdgeInsets.only( + bottom: (_userController.tab2?.length ?? 0) > 1 ? 48 : 0), + child: UserInfoCard( + relation: _userController.relation.value, + isFollow: _userController.isFollow.value, + card: userState.response.card, + images: userState.response.images, + onFollow: () => _userController.onFollow(context), + ), ), ); } diff --git a/lib/pages/member/new/widget/user_info_card.dart b/lib/pages/member/new/widget/user_info_card.dart index aeadcb09..98e8b2f9 100644 --- a/lib/pages/member/new/widget/user_info_card.dart +++ b/lib/pages/member/new/widget/user_info_card.dart @@ -416,7 +416,7 @@ class UserInfoCard extends StatelessWidget { // .toList(), // ), // ), - const SizedBox(height: 50), + const SizedBox(height: 5), ], ); }