- 抽出 lib/core 的日期/JSON 工具,收敛各页重复解析 - 主页与音乐风险页拆成组件,风险功能共用一套运行框架 - 修复设置页作为主页页签保存时弹掉根路由导致的黑屏 - 登录对齐 Astral aimedb 协议:84 位二维码校验、签名与请求头修正, 补 GlobalSign 中间证书;Windows 改用 WinHTTP 绕过服务端对 BoringSSL 的 TLS 指纹拦截(证书校验保持开启) - 补开发预览数据与测试
40 lines
1.4 KiB
Dart
40 lines
1.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:ichino/config/strings.dart';
|
|
import 'package:ichino/config/title_server_config.dart';
|
|
import 'package:ichino/models/session_model.dart';
|
|
import 'package:ichino/pages/settings_page.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
void main() {
|
|
setUp(() async {
|
|
SharedPreferences.setMockInitialValues({});
|
|
await TitleServerConfigHolder().clear();
|
|
SessionModel.instance.reset();
|
|
});
|
|
|
|
testWidgets('设置页作为主页页签保存时不会弹掉根路由', (tester) async {
|
|
await tester.pumpWidget(
|
|
const MaterialApp(
|
|
home: Scaffold(body: SettingsPage(showAppBar: false)),
|
|
),
|
|
);
|
|
|
|
final fields = find.byType(TextFormField);
|
|
expect(fields, findsNWidgets(11));
|
|
for (var i = 0; i < 11; i++) {
|
|
await tester.enterText(fields.at(i), 'value');
|
|
}
|
|
|
|
final save = find.widgetWithText(FilledButton, AppStrings.save);
|
|
await tester.ensureVisible(save);
|
|
await tester.tap(save);
|
|
await tester.pumpAndSettle();
|
|
|
|
// 根路由还在,页面没有变成黑屏;改为用 SnackBar 提示已保存。
|
|
expect(find.byType(SettingsPage), findsOneWidget);
|
|
expect(find.text(AppStrings.configSaved), findsOneWidget);
|
|
expect(tester.state<NavigatorState>(find.byType(Navigator)).canPop(), isFalse);
|
|
});
|
|
}
|