diff --git a/lib/constants/api.dart b/lib/constants/api.dart index 662e6f46..42f6f6b5 100644 --- a/lib/constants/api.dart +++ b/lib/constants/api.dart @@ -184,6 +184,9 @@ class _Community { ///社区话题:查询活跃话题(取前4个) String get hotTopic => '/user/gambit/findActivityGambit'; + + ///社区话题:我的动态 + String get myEvent => '/user/gambit/myTidings'; } class _Upload { diff --git a/lib/model/community/my_event_item_model.dart b/lib/model/community/my_event_item_model.dart new file mode 100644 index 00000000..4728c54a --- /dev/null +++ b/lib/model/community/my_event_item_model.dart @@ -0,0 +1,43 @@ +import 'package:akuCommunity/model/common/img_model.dart'; +import 'package:flustars/flustars.dart'; + +class MyEventItemModel { + int id; + String content; + List imgUrl; + String createDate; + + String get firstImg { + String img = ''; + if (imgUrl.isNotEmpty) img = imgUrl.first.url; + return img; + } + + DateTime get date => DateUtil.getDateTime(createDate); + + MyEventItemModel({this.id, this.content, this.imgUrl, this.createDate}); + + MyEventItemModel.fromJson(Map json) { + id = json['id']; + content = json['content']; + if (json['imgUrl'] != null) { + imgUrl = new List(); + json['imgUrl'].forEach((v) { + imgUrl.add(new ImgModel.fromJson(v)); + }); + } else + imgUrl = []; + createDate = json['createDate']; + } + + Map toJson() { + final Map data = new Map(); + data['id'] = this.id; + data['content'] = this.content; + if (this.imgUrl != null) { + data['imgUrl'] = this.imgUrl.map((v) => v.toJson()).toList(); + } + data['createDate'] = this.createDate; + return data; + } +} diff --git a/lib/pages/goods_deto_page/deto_create_page/widget/common_picker.dart b/lib/pages/goods_deto_page/deto_create_page/widget/common_picker.dart index 0f331ebe..89848589 100644 --- a/lib/pages/goods_deto_page/deto_create_page/widget/common_picker.dart +++ b/lib/pages/goods_deto_page/deto_create_page/widget/common_picker.dart @@ -3,7 +3,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; // Package imports: -import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; import 'package:flutter_icons/flutter_icons.dart'; import 'package:flutter_picker/flutter_picker.dart'; diff --git a/lib/pages/goods_deto_page/goods_deto_page.dart b/lib/pages/goods_deto_page/goods_deto_page.dart index d8ad6199..1d2456b7 100644 --- a/lib/pages/goods_deto_page/goods_deto_page.dart +++ b/lib/pages/goods_deto_page/goods_deto_page.dart @@ -13,7 +13,6 @@ import 'package:provider/provider.dart'; import 'package:velocity_x/velocity_x.dart'; // Project imports: -import 'package:akuCommunity/base/base_style.dart'; import 'package:akuCommunity/constants/api.dart'; import 'package:akuCommunity/model/manager/goods_out_model.dart'; import 'package:akuCommunity/pages/goods_deto_page/deto_create_page/deto_create_page.dart'; diff --git a/lib/pages/goods_deto_page/widget/goods_info_card.dart b/lib/pages/goods_deto_page/widget/goods_info_card.dart index ea04672a..9aafaad6 100644 --- a/lib/pages/goods_deto_page/widget/goods_info_card.dart +++ b/lib/pages/goods_deto_page/widget/goods_info_card.dart @@ -9,7 +9,6 @@ import 'package:flutter/material.dart'; // Project imports: import 'package:akuCommunity/utils/headers.dart'; import 'goods_info_card_button.dart'; -import 'image_horizontal_list.dart'; class GoodsInfoCard extends StatelessWidget { final GoodsOutModel model; diff --git a/lib/pages/goods_deto_page/widget/goods_info_card_button.dart b/lib/pages/goods_deto_page/widget/goods_info_card_button.dart index 0336b508..226bc6f1 100644 --- a/lib/pages/goods_deto_page/widget/goods_info_card_button.dart +++ b/lib/pages/goods_deto_page/widget/goods_info_card_button.dart @@ -1,7 +1,6 @@ // Flutter imports: import 'package:akuCommunity/model/manager/article_QR_code_model.dart'; import 'package:akuCommunity/pages/manager_func.dart'; -import 'package:akuCommunity/utils/network/base_model.dart'; import 'package:bot_toast/bot_toast.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/home/home_page.dart b/lib/pages/home/home_page.dart index 99c4b40a..7c586273 100644 --- a/lib/pages/home/home_page.dart +++ b/lib/pages/home/home_page.dart @@ -4,7 +4,6 @@ import 'dart:convert'; // Flutter imports: import 'package:akuCommunity/model/community/board_model.dart'; -import 'package:akuCommunity/ui/home/application/all_application.dart'; import 'package:akuCommunity/widget/buttons/column_action_button.dart'; import 'package:akuCommunity/widget/views/application_view.dart'; import 'package:flutter/cupertino.dart'; @@ -12,35 +11,24 @@ import 'package:flutter/material.dart'; // Package imports: import 'package:flutter_easyrefresh/easy_refresh.dart'; -import 'package:flutter_icons/flutter_icons.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:velocity_x/velocity_x.dart'; // Project imports: import 'package:akuCommunity/const/resource.dart'; -import 'package:akuCommunity/extensions/num_ext.dart'; import 'package:akuCommunity/extensions/page_router.dart'; import 'package:akuCommunity/model/aku_shop_model.dart'; import 'package:akuCommunity/model/community/activity_item_model.dart'; -import 'package:akuCommunity/pages/convenient_phone/convenient_phone_page.dart'; import 'package:akuCommunity/pages/home/widget/animate_app_bar.dart'; -import 'package:akuCommunity/pages/industry_committee/industry_committee_page.dart'; -import 'package:akuCommunity/pages/life_pay/life_pay_page.dart'; import 'package:akuCommunity/pages/message_center_page/message_center_page.dart'; -import 'package:akuCommunity/pages/open_door_page/open_door_page.dart'; -import 'package:akuCommunity/pages/things_page/fixed_submit_page.dart'; -import 'package:akuCommunity/pages/total_application_page/total_applications_page.dart'; -import 'package:akuCommunity/pages/visitor_access_page/visitor_access_page.dart'; import 'package:akuCommunity/service/base_model.dart'; import 'package:akuCommunity/ui/community/activity/activity_card.dart'; import 'package:akuCommunity/ui/community/activity/activity_list_page.dart'; import 'package:akuCommunity/ui/community/community_func.dart'; import 'package:akuCommunity/ui/home/home_notification.dart'; import 'package:akuCommunity/ui/home/home_title.dart'; -import 'package:akuCommunity/ui/manager/advice/advice_page.dart'; import 'package:akuCommunity/utils/headers.dart'; import 'package:akuCommunity/widget/container_comment.dart'; -import 'package:akuCommunity/widget/grid_buttons.dart'; import 'widget/home_search.dart'; import 'widget/home_swiper.dart'; @@ -68,18 +56,6 @@ class _HomePageState extends State ActivityItemModel _activityItemModel; List _boardItemModels = []; - List _gridList = [ - GridButton('一键开门', R.ASSETS_ICONS_TOOL_YJKM_PNG, OpenDoorPage().to), - GridButton('访客通行', R.ASSETS_ICONS_TOOL_FKYQ_PNG, VisitorAccessPage().to), - GridButton('报事报修', R.ASSETS_ICONS_TOOL_BSBX_PNG, FixedSubmitPage().to), - GridButton('生活缴费', R.ASSETS_ICONS_TOOL_SHJF_PNG, LifePayPage().to), - GridButton('业委会', R.ASSETS_ICONS_TOOL_YWH_PNG, IndustryCommitteePage().to), - GridButton('建议咨询', R.ASSETS_ICONS_TOOL_JYTS_PNG, - AdvicePage(type: AdviceType.SUGGESTION).to), - GridButton('便民电话', R.ASSETS_ICONS_TOOL_BMDH_PNG, ConvenientPhonePage().to), - GridButton('全部应用', R.ASSETS_ICONS_TOOL_QBYY_PNG, AllApplicationPage().to), - ]; - @override void initState() { super.initState(); diff --git a/lib/pages/market/market_page.dart b/lib/pages/market/market_page.dart index 3ad2273b..e1bdd641 100644 --- a/lib/pages/market/market_page.dart +++ b/lib/pages/market/market_page.dart @@ -9,8 +9,6 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; // Project imports: import 'package:akuCommunity/utils/headers.dart'; import 'package:akuCommunity/widget/app_bar_action.dart'; -import 'package:akuCommunity/widget/container_comment.dart'; -import 'package:akuCommunity/widget/grid_buttons.dart'; import 'package:akuCommunity/widget/search_bar_delegate.dart'; import 'package:akuCommunity/widget/single_ad_space.dart'; import 'widget/market_list.dart'; diff --git a/lib/pages/personal/user_profile_page.dart b/lib/pages/personal/user_profile_page.dart index 063178c8..e30f29c1 100644 --- a/lib/pages/personal/user_profile_page.dart +++ b/lib/pages/personal/user_profile_page.dart @@ -9,7 +9,6 @@ import 'package:flutter/material.dart'; import 'package:bot_toast/bot_toast.dart'; import 'package:common_utils/common_utils.dart'; import 'package:get/get.dart'; -import 'package:image_picker/image_picker.dart'; import 'package:provider/provider.dart'; import 'package:velocity_x/velocity_x.dart'; diff --git a/lib/pages/property/property_index.dart b/lib/pages/property/property_index.dart index 2bfb96c8..29dc85b1 100644 --- a/lib/pages/property/property_index.dart +++ b/lib/pages/property/property_index.dart @@ -1,37 +1,16 @@ -// Flutter imports: +import 'package:akuCommunity/constants/api.dart'; import 'package:akuCommunity/constants/application_objects.dart'; -import 'package:akuCommunity/ui/community/notice/notice_page.dart'; +import 'package:akuCommunity/model/community/board_model.dart'; +import 'package:akuCommunity/ui/community/notice/notice_card.dart'; +import 'package:akuCommunity/utils/network/base_list_model.dart'; +import 'package:akuCommunity/utils/network/net_util.dart'; import 'package:akuCommunity/widget/views/application_view.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - -// Package imports: -import 'package:get/get.dart'; -import 'package:pull_to_refresh/pull_to_refresh.dart'; - -// Project imports: -import 'package:akuCommunity/const/resource.dart'; -import 'package:akuCommunity/pages/activities_page/activities_details_page/activities_details_page.dart'; -import 'package:akuCommunity/pages/activities_page/activities_page.dart'; -import 'package:akuCommunity/pages/convenient_phone/convenient_phone_page.dart'; -import 'package:akuCommunity/pages/fitup_manage/fitup_manage_page.dart'; -import 'package:akuCommunity/pages/goods_deto_page/goods_deto_page.dart'; -import 'package:akuCommunity/pages/industry_committee/industry_committee_page.dart'; -import 'package:akuCommunity/pages/life_pay/life_pay_page.dart'; -import 'package:akuCommunity/pages/open_door_page/open_door_page.dart'; -import 'package:akuCommunity/pages/opening_code_page/opening_code_page.dart'; -import 'package:akuCommunity/pages/questionnaire_page/questionnaire_page.dart'; -import 'package:akuCommunity/pages/things_page/fixed_submit_page.dart'; -import 'package:akuCommunity/pages/total_application_page/total_applications_page.dart'; -import 'package:akuCommunity/pages/visitor_access_page/visitor_access_page.dart'; -import 'package:akuCommunity/routers/page_routers.dart'; -import 'package:akuCommunity/ui/manager/advice/advice_page.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; import 'package:akuCommunity/utils/headers.dart'; import 'package:akuCommunity/widget/bee_scaffold.dart'; -import 'package:akuCommunity/widget/circle_trend.dart'; import 'package:akuCommunity/widget/container_comment.dart'; -import 'package:akuCommunity/widget/grid_buttons.dart'; -import 'package:akuCommunity/widget/single_ad_space.dart'; import 'widget/property_card.dart'; //TODO CLEAN BOTTOM CODES. @@ -47,131 +26,23 @@ class PropertyIndex extends StatefulWidget { @Deprecated("sh*t property_index need to be cleaned.") class _PropertyIndexState extends State with AutomaticKeepAliveClientMixin, SingleTickerProviderStateMixin { - List _gridList = [ - GridButton('一键开门', R.ASSETS_ICONS_TOOL_YJKM_PNG, () { - OpenDoorPage().to(); - }), - GridButton('开门码', R.ASSETS_ICONS_TOOL_KMM_PNG, () { - OpeningCodePage().to(); - }), - GridButton('访客通行', R.ASSETS_ICONS_TOOL_FKYQ_PNG, () { - VisitorAccessPage().to(); - }), - GridButton('报事报修', R.ASSETS_ICONS_TOOL_BSBX_PNG, () { - FixedSubmitPage().to(); - }), - GridButton('生活缴费', R.ASSETS_ICONS_TOOL_SHJF_PNG, () { - LifePayPage().to(); - }), - GridButton('业委会', R.ASSETS_ICONS_TOOL_YWH_PNG, () { - IndustryCommitteePage().to(); - }), - GridButton('建议咨询', R.ASSETS_ICONS_TOOL_JYTS_PNG, - AdvicePage(type: AdviceType.SUGGESTION).to), - GridButton('便民电话', R.ASSETS_ICONS_TOOL_BMDH_PNG, () { - ConvenientPhonePage().to(); - }), - GridButton('活动投票', R.ASSETS_ICONS_TOOL_HDTP_PNG, () { - Get.to(ActivitiesPage()); - }), - GridButton('物品出户', R.ASSETS_ICONS_TOOL_WPCM_PNG, () { - GoodsDetoPage().to(); - }), - GridButton('投诉表扬', R.ASSETS_ICONS_TOOL_TSBY_PNG, - AdvicePage(type: AdviceType.COMPLAIN).to), - GridButton('问卷调查', R.ASSETS_ICONS_TOOL_WJDC_PNG, () { - QuestionnairePage().to(); - }), - GridButton('装修管理', R.ASSETS_ICONS_TOOL_ZXGL_PNG, () { - FitupManagePage().to(); - }), - GridButton('全部应用', R.ASSETS_ICONS_TOOL_QBYY_PNG, () { - TotalApplicationsPage().to(); - }), - ]; @override bool get wantKeepAlive => true; - List> _listView = [ - { - 'title': '今天', - 'contentList': >[ - { - 'subtitle': '小区环境秩序管理局物业执法简讯', - 'imagePath': - 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=486282784,967147496&fm=26&gp=0.jpg' - }, - { - 'subtitle': '小区健身房已经修缮完毕', - 'imagePath': - 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1600342657805&di=e47b51d9359495ee90488f7244afa85b&imgtype=0&src=http%3A%2F%2Fimage.cnpp.cn%2Fupload%2Fimages%2F20190122%2F14340317774_1200x800.jpg' - } - ] - }, - { - 'title': '118月', - 'contentList': >[ - { - 'subtitle': '小区有了狗狗专用便桶', - 'imagePath': - 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1600342731226&di=2223958ede406daa9fa85f3ea908e601&imgtype=0&src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20180505%2F570fe33aab56409fa62f0626ab78f4cd.jpeg' - }, - ] - }, - { - 'title': '217月', - 'contentList': >[ - { - 'subtitle': '小区开展保安员业务培训暨消防技能演练', - 'imagePath': - 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1600342893169&di=9f2fcf7e3b967ac99f0a2b22e59869d8&imgtype=0&src=http%3A%2F%2Fwww.nbbaxh.net%2FUploadFiles%2Fcontent%2F2018731649142.jpg' - }, - ] - }, - ]; - - RefreshController _refreshController = - RefreshController(initialRefresh: false); - ScrollController _controller; - - @override - void initState() { - super.initState(); - } - - void _onRefresh() async { - await Future.delayed(Duration(milliseconds: 1500)); - - _refreshController.refreshCompleted(); - } - - void _onLoading() async { - await Future.delayed(Duration(milliseconds: 1500)); - if (mounted) setState(() {}); - _refreshController.loadComplete(); - } - - void activityRouter() { - ActivitiesPage().to; - } - - void activityDetailsRouter(String imagePath, title, bool isOver, isVote, - isVoteOver, List memberList) { - ActivitiesDetailsPage( - bundle: Bundle() - ..putMap('details', { - 'title': title, - 'imagePath': imagePath, - 'isOver': isOver, - 'isVote': isVote, - 'isVoteOver': isVoteOver, - 'memberList': memberList - }), - ).to; - } - - void noticeRouter(String theme, imagePath) { - NoticePage().to; + EasyRefreshController _refreshController = EasyRefreshController(); + int _page = 1; + int _pageCount = 0; + List _models = []; + Future> _getItems() async { + BaseListModel model = await NetUtil().getList( + API.community.boardList, + params: { + 'pageNum': _page, + 'size': 10, + }, + ); + _pageCount = model.pageCount; + return model.tableList.map((e) => BoardItemModel.fromJson(e)).toList(); } @override @@ -185,22 +56,24 @@ class _PropertyIndexState extends State super.build(context); return BeeScaffold( title: '物业', - body: SmartRefresher( + body: EasyRefresh( controller: _refreshController, - header: WaterDropHeader(), - footer: ClassicFooter(), - onRefresh: _onRefresh, - onLoading: _onLoading, - enablePullUp: true, + firstRefresh: true, + header: MaterialHeader(), + footer: MaterialFooter(), + onRefresh: () async { + _page = 1; + _models = await _getItems(); + setState(() {}); + }, + onLoad: () async { + _page++; + _models.addAll(await _getItems()); + if (_page >= _pageCount) _refreshController.finishLoad(noMore: true); + setState(() {}); + }, child: CustomScrollView( - controller: _controller, slivers: [ - SliverToBoxAdapter( - child: SingleAdSpace( - imagePath: 'assets/example/guanggao5.png', - radius: 16, - ), - ), SliverToBoxAdapter( child: ContainerComment( radius: 8, @@ -227,14 +100,23 @@ class _PropertyIndexState extends State child: ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), - itemBuilder: (context, index) => CircleTrend( - title: _listView[index]['title'], - contentList: _listView[index]['contentList'], - fun: noticeRouter, - ), + itemBuilder: (context, index) => SizedBox(), itemCount: 3, ), ), + SliverList( + delegate: SliverChildBuilderDelegate( + (context, index) { + final BoardItemModel model = _models[index]; + BoardItemModel preModel; + if (index >= 1) preModel = _models[index - 1]; + return Padding( + padding: EdgeInsets.only(bottom: 8.w), + child: NoticeCard(model: model, preModel: preModel), + ); + }, + childCount: _models.length, + )), ], ), ), diff --git a/lib/pages/tab_navigator.dart b/lib/pages/tab_navigator.dart index 0269f741..17eeebf6 100644 --- a/lib/pages/tab_navigator.dart +++ b/lib/pages/tab_navigator.dart @@ -7,9 +7,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; // Project imports: -import 'package:akuCommunity/base/assets_image.dart'; import 'package:akuCommunity/const/resource.dart'; -import 'community/community_index.dart'; import 'home/home_page.dart'; import 'personal/personal_page.dart'; import 'property/property_index.dart'; diff --git a/lib/pages/things_page/fixed_submit_page.dart b/lib/pages/things_page/fixed_submit_page.dart index ca796899..95b09ac2 100644 --- a/lib/pages/things_page/fixed_submit_page.dart +++ b/lib/pages/things_page/fixed_submit_page.dart @@ -1,5 +1,4 @@ // Flutter imports: -import 'package:akuCommunity/widget/buttons/radio_button.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/total_application_page/total_applications_page.dart b/lib/pages/total_application_page/total_applications_page.dart deleted file mode 100644 index 189d4699..00000000 --- a/lib/pages/total_application_page/total_applications_page.dart +++ /dev/null @@ -1,338 +0,0 @@ -// Flutter imports: -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - -// Project imports: -import 'package:akuCommunity/base/assets_image.dart'; -import 'package:akuCommunity/pages/activities_page/activities_page.dart'; -import 'package:akuCommunity/pages/convenient_phone/convenient_phone_page.dart'; -import 'package:akuCommunity/pages/fitup_manage/fitup_manage_page.dart'; -import 'package:akuCommunity/pages/goods_deto_page/goods_deto_page.dart'; -import 'package:akuCommunity/pages/goods_manage_page/goods_manage_page.dart'; -import 'package:akuCommunity/pages/industry_committee/industry_committee_page.dart'; -import 'package:akuCommunity/pages/life_pay/life_pay_page.dart'; -import 'package:akuCommunity/pages/market/market_detail_page/market_detail_page.dart'; -import 'package:akuCommunity/pages/one_alarm/widget/alarm_page.dart'; -import 'package:akuCommunity/pages/open_door_page/open_door_page.dart'; -import 'package:akuCommunity/pages/opening_code_page/opening_code_page.dart'; -import 'package:akuCommunity/pages/questionnaire_page/questionnaire_page.dart'; -import 'package:akuCommunity/pages/things_page/fixed_submit_page.dart'; -import 'package:akuCommunity/pages/visitor_access_page/visitor_access_page.dart'; -import 'package:akuCommunity/routers/page_routers.dart'; -import 'package:akuCommunity/ui/manager/advice/advice_page.dart'; -import 'package:akuCommunity/utils/headers.dart'; -import 'widget/applications_bar.dart'; - -class TotalApplicationsPage extends StatefulWidget { - TotalApplicationsPage({Key key}) : super(key: key); - - @override - _TotalApplicationsPageState createState() => _TotalApplicationsPageState(); -} - -class _TotalApplicationsPageState extends State { - int _currentIndex = 0; - bool isEdit = false; - List _leftNav = ['为您推荐', '智慧管家']; - - Widget _myApp() { - return Container( - margin: EdgeInsets.only( - top: 32.w, - left: 32.w, - right: 32.w, - ), - padding: EdgeInsets.only(bottom: 16.w), - decoration: BoxDecoration( - border: - Border(bottom: BorderSide(color: Color(0xffd8d8d8), width: 0.5)), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - '我的应用', - style: TextStyle( - fontSize: 28.sp, - color: Color(0xff333333), - ), - ), - InkWell( - onTap: () { - setState(() { - isEdit = !isEdit; - }); - }, - child: Container( - alignment: Alignment.center, - width: 90.w, - padding: EdgeInsets.symmetric(vertical: 6.w), - decoration: BoxDecoration( - color: Color(0xffffd000), - borderRadius: BorderRadius.all(Radius.circular(2)), - ), - child: Text( - isEdit ? '完成' : '编辑', - style: TextStyle( - fontWeight: FontWeight.w600, - fontSize: 28.sp, - color: Color(0xff333333), - ), - ), - ), - ), - ], - ), - ); - } - - Widget _myAppGrid(List> gridList, int count) { - return Container( - child: GridView.builder( - padding: EdgeInsets.zero, - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - itemCount: gridList.length, - itemBuilder: (BuildContext context, int index) { - return InkWell( - onTap: isEdit - ? () { - setState(() { - switch (count) { - case 3: - if ((!AssetsImage.mineAppList.any((item) => - item['title'] == gridList[index]['title'])) && - AssetsImage.mineAppList.length < 8) { - AssetsImage.mineAppList.add(gridList[index]); - } - break; - case 4: - gridList.removeAt(index); - break; - default: - } - }); - } - : () { - switch (gridList[index]['title']) { - case '居家生活': - case '数码家电': - case '休闲副食': - case '滋补保健': - case '彩妆香水': - case '服饰箱包': - case '母婴玩具': - case '饮料酒水': - MarketDetailPage( - bundle: Bundle() - ..putString('title', gridList[index]['title']), - ).to; - break; - case '一键开门': - OpenDoorPage().to(); - break; - case '开门码': - OpeningCodePage().to(); - break; - case '访客通行': - case '我的访客': - VisitorAccessPage().to(); - break; - case '报事报修': - FixedSubmitPage().to(); - break; - case '生活缴费': - case '我的缴费': - LifePayPage().to(); - break; - case '业委会': - IndustryCommitteePage().to(); - break; - case '建议咨询': - AdvicePage(type: AdviceType.SUGGESTION).to(); - break; - case '便民电话': - ConvenientPhonePage().to(); - break; - case '活动投票': - ActivitiesPage().to(); - break; - case '社区活动': - ActivitiesPage().to(); - break; - case '物品出户': - GoodsDetoPage().to(); - break; - case '投诉表扬': - AdvicePage(type: AdviceType.COMPLAIN).to(); - break; - case '问卷调查': - QuestionnairePage().to(); - break; - case '装修管理': - FitupManagePage().to(); - break; - case '借还管理': - GoodsManagePage().to(); - break; - case '一键报警': - AlarmPage().to(); - break; - default: - break; - } - }, - child: Container( - alignment: Alignment.center, - child: Stack( - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.asset( - gridList[index]['imagePath'], - height: 75.w, - width: 75.w, - fit: BoxFit.cover, - ), - SizedBox(height: 8.w), - Text( - gridList[index]['title'], - style: TextStyle( - fontSize: 24.sp, - color: Color(0xff4a4b51), - ), - ) - ], - ), - isEdit - ? Positioned( - right: 0, - top: 24.w, - child: Image.asset( - count == 3 - ? AssetsImage.APPADD - : AssetsImage.APPREDUCE, - height: 24.w, - width: 24.w, - ), - ) - : SizedBox(), - ], - ), - ), - ); - }, - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: count, - childAspectRatio: 1.0, - ), - ), - ); - } - - Widget _leftInkWellNav(int index) { - return InkWell( - child: Stack( - children: [ - Container( - height: 88.w, - alignment: Alignment.center, - color: _currentIndex == index ? Colors.white : Colors.transparent, - padding: EdgeInsets.symmetric(vertical: 24.w), - child: Text( - _leftNav[index], - style: TextStyle( - fontSize: 28.sp, - color: Color(0xff333333), - ), - ), - ), - _currentIndex == index - ? Positioned( - top: 24.w, - left: 1, - child: SizedBox( - width: 4.w, - height: 40.w, - child: DecoratedBox( - decoration: BoxDecoration(color: Color(0xffffd000)), - ), - ), - ) - : SizedBox(), - ], - ), - onTap: () { - setState(() { - _currentIndex = index; - }); - }, - ); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: PreferredSize( - child: ApplicationsBar(), - preferredSize: Size.fromHeight(kToolbarHeight), - ), - body: ListView( - children: [ - Container( - color: Colors.white, - child: _myApp(), - ), - Container( - color: Colors.white, - child: _myAppGrid(AssetsImage.mineAppList, 4), - ), - Container( - margin: EdgeInsets.only(top: 32.w), - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: 172.w, - child: ListView.builder( - shrinkWrap: true, - itemCount: _leftNav.length, - itemBuilder: (BuildContext context, int index) { - return _leftInkWellNav(index); - }), - ), - Container( - width: 578.w, - color: Colors.white, - child: ListView( - shrinkWrap: true, - children: [ - Builder(builder: (_) { - switch (_currentIndex) { - case 0: - return _myAppGrid(AssetsImage.recommendGridList, 3); - break; - case 1: - return _myAppGrid(AssetsImage.propertyGridList, 3); - break; - case 2: - return _myAppGrid(AssetsImage.shopGridList, 3); - break; - default: - return SizedBox(); - } - }), - ], - ), - ), - ], - ), - ), - ], - ), - ); - } -} diff --git a/lib/pages/total_application_page/widget/applications_bar.dart b/lib/pages/total_application_page/widget/applications_bar.dart deleted file mode 100644 index 3ace0cdc..00000000 --- a/lib/pages/total_application_page/widget/applications_bar.dart +++ /dev/null @@ -1,66 +0,0 @@ -// Flutter imports: -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - -// Package imports: -import 'package:flutter_icons/flutter_icons.dart'; -import 'package:get/get.dart'; - -// Project imports: -import 'package:akuCommunity/utils/headers.dart'; -import 'package:akuCommunity/widget/search_bar_delegate.dart'; - -class ApplicationsBar extends StatelessWidget { - const ApplicationsBar({Key key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return Container( - child: AppBar( - elevation: 0, - titleSpacing: 0, - backgroundColor: Colors.white, - leading: InkWell( - onTap: () => Get.back(), - child: Icon( - AntDesign.left, - size: 45.sp, - color: Color(0xff333333), - ), - ), - centerTitle: true, - title: InkWell( - onTap: () { - showSearch(context: context, delegate: SearchBarDelegate()); - }, - child: Container( - margin: EdgeInsets.only(right: 32.w), - padding: EdgeInsets.only( - left: 40.w, - top: 15.w, - bottom: 15.w), - decoration: BoxDecoration( - color: Color(0xfff3f3f3), - borderRadius: BorderRadius.all(Radius.circular(36)), - ), - child: Row(children: [ - Icon( - AntDesign.search1, - size: 28.sp, - color: Color(0xff999999), - ), - SizedBox(width: 5), - Text( - '搜索商品、活动、帖子、应用', - style: TextStyle( - fontSize: 28.sp, - color: Color(0xff999999), - ), - ) - ]), - ), - ), - ), - ); - } -} diff --git a/lib/pages/visitor_access_page/visitor_access_page.dart b/lib/pages/visitor_access_page/visitor_access_page.dart index 2c9e707f..6846c64a 100644 --- a/lib/pages/visitor_access_page/visitor_access_page.dart +++ b/lib/pages/visitor_access_page/visitor_access_page.dart @@ -3,7 +3,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; // Package imports: -import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; import 'package:flutter_icons/flutter_icons.dart'; import 'package:get/get.dart'; import 'package:provider/provider.dart'; diff --git a/lib/ui/community/activity/activity_card.dart b/lib/ui/community/activity/activity_card.dart index 4e79ecb4..bb47faf5 100644 --- a/lib/ui/community/activity/activity_card.dart +++ b/lib/ui/community/activity/activity_card.dart @@ -8,7 +8,6 @@ import 'package:velocity_x/velocity_x.dart'; // Project imports: import 'package:akuCommunity/const/resource.dart'; import 'package:akuCommunity/constants/api.dart'; -import 'package:akuCommunity/model/common/img_model.dart'; import 'package:akuCommunity/model/community/activity_item_model.dart'; import 'package:akuCommunity/ui/community/activity/activity_detail_page.dart'; import 'package:akuCommunity/utils/headers.dart'; diff --git a/lib/ui/community/activity/activity_people_list_page.dart b/lib/ui/community/activity/activity_people_list_page.dart index 5edc6558..8293a439 100644 --- a/lib/ui/community/activity/activity_people_list_page.dart +++ b/lib/ui/community/activity/activity_people_list_page.dart @@ -11,7 +11,6 @@ import 'package:akuCommunity/model/community/activity_people_model.dart'; import 'package:akuCommunity/pages/things_page/widget/bee_list_view.dart'; import 'package:akuCommunity/utils/headers.dart'; import 'package:akuCommunity/widget/bee_scaffold.dart'; -import 'package:akuCommunity/widget/others/stack_avatar.dart'; class ActivityPeopleListPage extends StatefulWidget { final int id; diff --git a/lib/ui/community/community_views/my_community_view.dart b/lib/ui/community/community_views/my_community_view.dart index 3a101b32..3a6016a3 100644 --- a/lib/ui/community/community_views/my_community_view.dart +++ b/lib/ui/community/community_views/my_community_view.dart @@ -1,4 +1,10 @@ +import 'package:akuCommunity/ui/community/community_views/widgets/my_event_card.dart'; +import 'package:akuCommunity/utils/headers.dart'; +import 'package:akuCommunity/constants/api.dart'; +import 'package:akuCommunity/model/community/my_event_item_model.dart'; +import 'package:akuCommunity/pages/things_page/widget/bee_list_view.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; class MyCommunityView extends StatefulWidget { MyCommunityView({Key key}) : super(key: key); @@ -9,10 +15,31 @@ class MyCommunityView extends StatefulWidget { class _MyCommunityViewState extends State with AutomaticKeepAliveClientMixin { + EasyRefreshController _refreshController = EasyRefreshController(); @override Widget build(BuildContext context) { super.build(context); - return Container(); + return BeeListView( + path: API.community.myEvent, + controller: _refreshController, + convert: (model) { + return model.tableList + .map((e) => MyEventItemModel.fromJson(e)) + .toList(); + }, + builder: (items) { + return ListView.separated( + itemBuilder: (context, index) { + final MyEventItemModel model = items[index]; + MyEventItemModel preModel; + if (index >= 1) preModel = items[index - 1]; + return MyEventCard(model: model, preModel: preModel); + }, + separatorBuilder: (_, __) => 8.hb, + itemCount: items.length, + ); + }, + ); } @override diff --git a/lib/ui/community/community_views/widgets/my_event_card.dart b/lib/ui/community/community_views/widgets/my_event_card.dart new file mode 100644 index 00000000..f3b89bbc --- /dev/null +++ b/lib/ui/community/community_views/widgets/my_event_card.dart @@ -0,0 +1,100 @@ +import 'package:akuCommunity/const/resource.dart'; +import 'package:akuCommunity/constants/api.dart'; +import 'package:akuCommunity/model/community/my_event_item_model.dart'; +import 'package:akuCommunity/utils/bee_date_util.dart'; +import 'package:akuCommunity/utils/headers.dart'; +import 'package:akuCommunity/widget/picker/bee_image_preview.dart'; +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:velocity_x/velocity_x.dart'; + +class MyEventCard extends StatelessWidget { + final MyEventItemModel model; + final MyEventItemModel preModel; + const MyEventCard({ + Key key, + @required this.model, + @required this.preModel, + }) : super(key: key); + + bool get isFirst => preModel == null; + + bool get notSameYear => model.date.year != (preModel?.date?.year ?? 0); + + BeeDateUtil get beeDate => BeeDateUtil(model.date); + + Widget title() { + if (beeDate.sameDay) return '今天'.text.size(52.sp).bold.make(); + if (beeDate.isYesterday) + return '昨天'.text.size(52.sp).bold.make(); + else + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + model.date.day.toString().text.size(52.sp).bold.make(), + '${model.date.month}月'.text.size(36.sp).make(), + ], + ); + } + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + (notSameYear && model.date.year != DateTime.now().year) + ? '${model.date.year}年' + .text + .bold + .size(52.sp) + .make() + .paddingOnly(left: 32.w, top: isFirst ? 0 : 64.w, bottom: 32.w) + : SizedBox(), + MaterialButton( + onPressed: () {}, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 200.w, + padding: EdgeInsets.only(left: 32.w), + alignment: Alignment.topLeft, + child: beeDate.sameDay ? SizedBox() : title(), + ), + model.imgUrl.length == 0 + ? SizedBox(height: 152.w) + : GestureDetector( + onTap: () { + Get.to( + BeeImagePreview.path(path: model.imgUrl.first.url), + opaque: false, + ); + }, + child: Hero( + tag: model.imgUrl.first.url, + child: Container( + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: Colors.black12, + borderRadius: BorderRadius.circular(8.w), + ), + child: FadeInImage.assetNetwork( + placeholder: R.ASSETS_IMAGES_PLACEHOLDER_WEBP, + image: API.image(model.imgUrl.first.url), + width: 152.w, + height: 152.w, + fit: BoxFit.cover, + ), + ), + ), + ), + 10.wb, + model.content.text.make().expand(), + ], + ), + ), + ], + ); + } +} diff --git a/lib/widget/views/application_view.dart b/lib/widget/views/application_view.dart index 16394485..15c73230 100644 --- a/lib/widget/views/application_view.dart +++ b/lib/widget/views/application_view.dart @@ -52,6 +52,7 @@ class _ApplicationViewState extends State { Widget build(BuildContext context) { return GridView.builder( padding: EdgeInsets.zero, + physics: NeverScrollableScrollPhysics(), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4), itemBuilder: (context, index) {