diff --git a/client/lib/screens/settings_page.dart b/client/lib/screens/settings_page.dart index 97a9604..dc29df9 100644 --- a/client/lib/screens/settings_page.dart +++ b/client/lib/screens/settings_page.dart @@ -7,14 +7,18 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import '../core/responsive/form_factor.dart'; import '../l10n/app_text.dart'; import '../pangolin_theme.dart'; import '../services/web_launch.dart'; import '../state/app_providers.dart'; +import '../state/navigation_provider.dart'; import '../state/settings_provider.dart'; import '../state/update_provider.dart'; +import '../widgets/account_screens.dart'; import '../widgets/pangolin_icons.dart'; import '../widgets/pangolin_toast.dart'; +import 'orders_page.dart'; /// 「检查更新」手动触发:拉取 `$kApiBaseUrl/version`,失败/无更新走轻提示, /// 有更新则清掉「已忽略版本」→ 顶部更新 banner 显示 + toast(不弹窗)。 Future _checkForUpdate(BuildContext context, WidgetRef ref, AppText t) async { @@ -51,15 +55,29 @@ class SettingsPage extends ConsumerWidget { Widget sw(bool v, ValueChanged on) => Switch(value: v, activeThumbColor: c.accent, onChanged: on); + // desktop 内容区下钻(切 navView);mobile/tablet 全屏 push(与 account_page 同)。 + final isDesktop = context.formFactor == FormFactor.desktop; + void open(NavView v, Widget mobilePage) { + if (isDesktop) { + ref.read(navViewProvider.notifier).state = v; + } else { + Navigator.of(context).push(MaterialPageRoute(builder: (_) => mobilePage)); + } + } + return SingleChildScrollView( padding: const EdgeInsets.fromLTRB(32, 16, 32, 24), child: ConstrainedBox( constraints: const BoxConstraints(maxWidth: 560), child: Column(crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - // 兑换入口 + // 兑换 & 购买 + 我的订单 _Card(children: [ - _Row(title: t.redeemEntry, sub: t.proMember, last: true, - right: Icon(PangolinIcons.chevronRight, size: 18, color: c.fg3), onTap: () {}), + _Row(title: t.redeemEntry, sub: t.proMember, + right: Icon(PangolinIcons.chevronRight, size: 18, color: c.fg3), + onTap: () => open(NavView.redeem, RedeemScreen(t: t))), + _Row(title: t.ordersTitle, last: true, + right: Icon(PangolinIcons.chevronRight, size: 18, color: c.fg3), + onTap: () => open(NavView.orders, OrdersScreen(t: t))), ]), const SizedBox(height: 16), // 功能开关组(开机自启是桌面端登录项概念,iOS/Android 无此能力,仅桌面显示) diff --git a/client/pubspec.yaml b/client/pubspec.yaml index 0bc59dd..072b820 100644 --- a/client/pubspec.yaml +++ b/client/pubspec.yaml @@ -1,7 +1,7 @@ name: pangolin_vpn description: 穿山甲 · Pangolin — 极简、稳定、跨平台网络加速客户端。 publish_to: "none" -version: 1.0.67+68 +version: 1.0.68+69 environment: sdk: ^3.5.0 diff --git a/client/windows/installer/pangolin.iss b/client/windows/installer/pangolin.iss index ed8f572..1d31d8d 100644 --- a/client/windows/installer/pangolin.iss +++ b/client/windows/installer/pangolin.iss @@ -3,7 +3,7 @@ ; 前置: 先在 client/ 跑 `flutter build windows`(Release),产物在 ; ..\..\build\windows\x64\runner\Release #define MyAppName "穿山甲 Pangolin" -#define MyAppVersion "1.0.67" +#define MyAppVersion "1.0.68" #define MyAppPublisher "Pangolin" #define MyAppExeName "pangolin_vpn.exe" #define BuildDir "..\..\build\windows\x64\runner\Release"