Skip to content

Commit 3b27e1b

Browse files
committed
feat: toolbox back
fix: ruisi topic list cannot pull down to refresh
1 parent fad2503 commit 3b27e1b

3 files changed

Lines changed: 32 additions & 28 deletions

File tree

lib/external/ruisi_flutter/lib/pages/topic_list_page.dart

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import '../widgets/topic_list_item.dart';
1212

1313
class TopicListPage extends StatefulWidget {
1414
final Future<List<Topic>> Function(int) getTopicList;
15+
1516
/// 首页列表使用预览语义,普通帖子列表保持常规详情链路。
1617
final bool useHomeTopicPreviewNavigation;
1718

@@ -46,25 +47,28 @@ class _TopicListPageState extends State<TopicListPage>
4647
@override
4748
Widget build(BuildContext context) {
4849
super.build(context);
49-
return PagingListener(
50-
controller: _pagingController,
51-
builder: (context, state, fetchNextPage) =>
52-
PagedListView<int, Topic>.separated(
53-
state: state,
54-
fetchNextPage: fetchNextPage,
55-
builderDelegate: PagedChildBuilderDelegate(
56-
itemBuilder: (context, item, index) => TopicListItem(
57-
topic: item,
58-
// 首页误触需要保留当前详情链,其他列表继续使用普通 push。
59-
onTap: () => widget.useHomeTopicPreviewNavigation
60-
? context.pushRuisiHomeTopicPreview(
61-
TopicDetailPage(tid: item.tid),
62-
)
63-
: context.push(TopicDetailPage(tid: item.tid)),
50+
return RefreshIndicator(
51+
onRefresh: () => Future.sync(() => _pagingController.refresh()),
52+
child: PagingListener(
53+
controller: _pagingController,
54+
builder: (context, state, fetchNextPage) =>
55+
PagedListView<int, Topic>.separated(
56+
state: state,
57+
fetchNextPage: fetchNextPage,
58+
builderDelegate: PagedChildBuilderDelegate(
59+
itemBuilder: (context, item, index) => TopicListItem(
60+
topic: item,
61+
// 首页误触需要保留当前详情链,其他列表继续使用普通 push。
62+
onTap: () => widget.useHomeTopicPreviewNavigation
63+
? context.pushRuisiHomeTopicPreview(
64+
TopicDetailPage(tid: item.tid),
65+
)
66+
: context.push(TopicDetailPage(tid: item.tid)),
67+
),
6468
),
69+
separatorBuilder: (_, _) => const Divider(height: 1),
6570
),
66-
separatorBuilder: (_, _) => const Divider(height: 1),
67-
),
71+
),
6872
);
6973
}
7074
}

lib/page/homepage/home.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import 'package:talker_flutter/talker_flutter.dart';
1313
import 'package:watermeter/external/ruisi_flutter/ruisi_flutter.dart';
1414
import 'package:watermeter/page/pig/pig_page.dart';
1515
import 'package:watermeter/page/public_widget/split_page_placeholder.dart';
16+
import 'package:watermeter/page/toolbox/toolbox_page.dart';
1617
import 'package:watermeter/repository/logger.dart';
1718
import 'package:watermeter/page/public_widget/toast.dart';
1819
import 'package:restart_app/restart_app.dart';
@@ -243,12 +244,18 @@ class _HomePageMasterState extends State<HomePageMaster>
243244
),
244245
PageInformation(
245246
index: 2,
247+
name: FlutterI18n.translate(context, "homepage.toolbox.toolbox"),
248+
icon: MingCuteIcons.mgc_tool_line,
249+
iconChoice: MingCuteIcons.mgc_tool_fill,
250+
),
251+
PageInformation(
252+
index: 3,
246253
name: FlutterI18n.translate(context, "homepage.dashboard"),
247254
icon: MingCuteIcons.mgc_pig_line,
248255
iconChoice: MingCuteIcons.mgc_pig_fill,
249256
),
250257
PageInformation(
251-
index: 3,
258+
index: 4,
252259
name: FlutterI18n.translate(context, "homepage.setting"),
253260
icon: MingCuteIcons.mgc_user_2_line,
254261
iconChoice: MingCuteIcons.mgc_user_2_fill,
@@ -272,6 +279,7 @@ class _HomePageMasterState extends State<HomePageMaster>
272279
cookiePath: supportPath.path,
273280
talker: TalkerFlutter.init(),
274281
),
282+
const ToolBoxPage(),
275283
const PigPage(),
276284
const SettingWindow(),
277285
],

lib/page/toolbox/toolbox_page.dart

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ class _ToolBoxPageState extends State<ToolBoxPage> {
2424
children: [
2525
WebViewAddresses(
2626
name: FlutterI18n.translate(context, "toolbox.payment"),
27-
url: "https://xxcapp.xidian.edu.cn/uc/api/oauth/index?redirect=https://ignypt.xidian.edu.cn/revenueH5/login?opcode=MPAY&appid=200260318155520600&state=1231231231",
27+
url:
28+
"https://xxcapp.xidian.edu.cn/uc/api/oauth/index?redirect=https://ignypt.xidian.edu.cn/revenueH5/login?opcode=MPAY&appid=200260318155520600&state=1231231231",
2829
description: FlutterI18n.translate(
2930
context,
3031
"toolbox.payment_description",
@@ -64,15 +65,6 @@ class _ToolBoxPageState extends State<ToolBoxPage> {
6465
),
6566
iconData: MingCuteIcons.mgc_building_4_line,
6667
),
67-
WebViewAddresses(
68-
name: FlutterI18n.translate(context, "toolbox.mobile"),
69-
url: "https://xxcapp.xidian.edu.cn/site/xidianPage/home",
70-
description: FlutterI18n.translate(
71-
context,
72-
"toolbox.mobile_description",
73-
),
74-
iconData: MingCuteIcons.mgc_chat_2_line,
75-
),
7668
WebViewAddresses(
7769
name: FlutterI18n.translate(context, "toolbox.network"),
7870
url: "https://zfw.xidian.edu.cn",

0 commit comments

Comments
 (0)