From 88b54c5c2da20a60d34e56e72a27e9020ded0748 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Tue, 11 Jul 2023 13:44:40 +0800 Subject: [PATCH] =?UTF-8?q?mod:=20=E5=8A=A8=E6=80=81=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E9=87=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/dynamics/controller.dart | 12 +++++- lib/pages/dynamics/view.dart | 65 +++++++++++++++++++++++------- 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/lib/pages/dynamics/controller.dart b/lib/pages/dynamics/controller.dart index 27ad2b89..27a54297 100644 --- a/lib/pages/dynamics/controller.dart +++ b/lib/pages/dynamics/controller.dart @@ -11,7 +11,7 @@ import 'package:pilipala/utils/utils.dart'; class DynamicsController extends GetxController { int page = 1; String? offset = ''; - RxList? dynamicsList = [DynamicItemModel()].obs; + RxList dynamicsList = [DynamicItemModel()].obs; Rx dynamicsType = DynamicsType.values[0].obs; RxString dynamicsTypeLabel = '全部'.obs; final ScrollController scrollController = ScrollController(); @@ -153,4 +153,14 @@ class DynamicsController extends GetxController { duration: const Duration(milliseconds: 500), curve: Curves.easeInOut); } } + + // 重置搜索 + void resetSearch() { + mid.value = -1; + dynamicsType.value = DynamicsType.values[0]; + initialValue.value = 1; + SmartDialog.showToast('还原默认加载', alignment: Alignment.topCenter); + dynamicsList.value = [DynamicItemModel()]; + queryFollowDynamic(); + } } diff --git a/lib/pages/dynamics/view.dart b/lib/pages/dynamics/view.dart index 59abafc7..f9c1b828 100644 --- a/lib/pages/dynamics/view.dart +++ b/lib/pages/dynamics/view.dart @@ -3,10 +3,14 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; +import 'package:hive/hive.dart'; import 'package:pilipala/common/skeleton/dynamic_card.dart'; import 'package:pilipala/common/widgets/http_error.dart'; +import 'package:pilipala/common/widgets/network_img_layer.dart'; import 'package:pilipala/models/common/dynamics_type.dart'; import 'package:pilipala/models/dynamics/result.dart'; +import 'package:pilipala/pages/mine/index.dart'; +import 'package:pilipala/utils/storage.dart'; import 'controller.dart'; import 'widgets/dynamic_panel.dart'; @@ -24,6 +28,8 @@ class _DynamicsPageState extends State final DynamicsController _dynamicsController = Get.put(DynamicsController()); Future? _futureBuilderFuture; bool _isLoadingMore = false; + Box userInfoCache = GStrorage.userInfo; + @override bool get wantKeepAlive => true; @@ -55,7 +61,7 @@ class _DynamicsPageState extends State scrolledUnderElevation: 0, titleSpacing: 0, title: SizedBox( - height: 36, + height: 34, child: Stack( children: [ Row( @@ -123,7 +129,7 @@ class _DynamicsPageState extends State // .fontSize), // ), }, - padding: 16.0, + padding: 13.0, decoration: BoxDecoration( color: Theme.of(context) .colorScheme @@ -135,7 +141,7 @@ class _DynamicsPageState extends State color: Theme.of(context).colorScheme.background, borderRadius: BorderRadius.circular(20), border: Border.all( - width: 1.2, + width: 1, color: Theme.of(context) .colorScheme .surfaceVariant @@ -152,22 +158,53 @@ class _DynamicsPageState extends State ], ), Positioned( - right: 10, + right: 4, top: 0, bottom: 0, child: IconButton( padding: EdgeInsets.zero, - onPressed: () { - _dynamicsController.mid.value = -1; - _dynamicsController.dynamicsType.value = - DynamicsType.values[0]; - SmartDialog.showToast('还原默认加载', - alignment: Alignment.topCenter); - _dynamicsController.queryFollowDynamic(); - }, - icon: const Icon(Icons.history), + onPressed: () => _dynamicsController.resetSearch(), + icon: const Icon(Icons.history, size: 21), ), - ) + ), + Positioned( + left: 10, + top: 0, + bottom: 0, + child: Align( + alignment: Alignment.center, + child: userInfoCache.get('userInfoCache') != null + ? GestureDetector( + onTap: () => showModalBottomSheet( + context: context, + builder: (_) => const SizedBox( + height: 450, + child: MinePage(), + ), + clipBehavior: Clip.hardEdge, + isScrollControlled: true, + ), + child: NetworkImgLayer( + type: 'avatar', + width: 30, + height: 30, + src: userInfoCache.get('userInfoCache').face, + ), + ) + : IconButton( + onPressed: () => showModalBottomSheet( + context: context, + builder: (_) => const SizedBox( + height: 450, + child: MinePage(), + ), + clipBehavior: Clip.hardEdge, + isScrollControlled: true, + ), + icon: const Icon(CupertinoIcons.person, size: 22), + ), + ), + ), ], ), ),