Skip to content

Commit 85b9235

Browse files
committed
feat(debug): add debug page
Signed-off-by: OctagonalStar <[email protected]>
1 parent 38d35cb commit 85b9235

File tree

4 files changed

+101
-0
lines changed

4 files changed

+101
-0
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
## v?.?.?? - ????-??-?? - (??????)
44

5+
### Added
6+
7+
- 添加了日志捕获 [#23](https://github.com/OctagonalStar/arabic_learning/issues/23)
8+
- 添加了调试页面
9+
510
### Improvement
611

712
- 优化了网页端字体加载逻辑

lib/pages/setting_page.dart

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'dart:convert';
22

3+
import 'package:arabic_learning/sub_pages_builder/setting_pages/debug_page.dart';
34
import 'package:flutter/foundation.dart' show kIsWeb;
45
import 'package:file_picker/file_picker.dart';
56
import 'package:flutter/material.dart';
@@ -374,6 +375,28 @@ class _SettingPage extends State<SettingPage> {
374375
minimumSize: Size.fromHeight(mediaQuery.size.height * 0.08),
375376
shape: RoundedRectangleBorder(borderRadius: BorderRadiusGeometry.vertical(top: Radius.circular(25.0))),
376377
),
378+
onPressed: (){
379+
context.read<Global>().uiLogger.info("跳转: SettingPage => DebugPage");
380+
Navigator.push(context, MaterialPageRoute(builder: (context)=>DebugPage()));
381+
},
382+
child: Row(
383+
mainAxisAlignment: MainAxisAlignment.start,
384+
children: [
385+
Icon(Icons.bug_report, size: 24.0),
386+
SizedBox(width: mediaQuery.size.width * 0.01),
387+
Expanded(
388+
child: Text("调试信息")
389+
),
390+
Icon(Icons.arrow_forward_ios)
391+
],
392+
)
393+
),
394+
ElevatedButton(
395+
style: ElevatedButton.styleFrom(
396+
backgroundColor: Theme.of(context).colorScheme.onPrimary.withAlpha(150),
397+
minimumSize: Size.fromHeight(mediaQuery.size.height * 0.08),
398+
shape: BeveledRectangleBorder(),
399+
),
377400
onPressed: () {
378401
context.read<Global>().uiLogger.info("打开Github项目网站");
379402
launchUrl(Uri.parse("https://github.com/OctagonalStar/arabic_learning/"));
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import 'package:arabic_learning/funcs/ui.dart';
2+
import 'package:flutter/material.dart';
3+
import 'package:provider/provider.dart';
4+
5+
import 'package:arabic_learning/vars/global.dart';
6+
7+
class DebugPage extends StatefulWidget {
8+
const DebugPage({super.key});
9+
10+
@override
11+
State<StatefulWidget> createState() => _DebugPage();
12+
}
13+
14+
class _DebugPage extends State<DebugPage> {
15+
@override
16+
Widget build(BuildContext context) {
17+
context.read<Global>().uiLogger.info("构建 DebugPage");
18+
return Scaffold(
19+
appBar: AppBar(
20+
title: Text("调试设置"),
21+
),
22+
body: Column(
23+
children: [
24+
TextContainer(text: "该页面为软件调试/测试和bug反馈使用,非必要请勿开启日志捕获,以免性能损耗", style: TextStyle(color: Colors.redAccent)),
25+
Row(
26+
children: [
27+
Icon(Icons.logo_dev),
28+
Expanded(child: Text("启用软件内日志捕获")),
29+
Switch(
30+
value: context.watch<Global>().settingData["Debug"],
31+
onChanged: (value){
32+
context.read<Global>().settingData["Debug"] = value;
33+
context.read<Global>().updateSetting();
34+
}
35+
)
36+
],
37+
),
38+
SizedBox(
39+
width: MediaQuery.of(context).size.width,
40+
height: MediaQuery.of(context).size.height * 0.7,
41+
child: ExpansionTile(
42+
title: Text("日志捕获内容"),
43+
children: [
44+
SizedBox(
45+
height: MediaQuery.of(context).size.height * 0.6,
46+
child: ListView(
47+
children: List.generate(
48+
context.watch<Global>().internalLogCapture.length,
49+
(index){
50+
final String logLine = context.read<Global>().internalLogCapture[context.read<Global>().internalLogCapture.length - index - 1];
51+
return TextContainer(
52+
text: logLine,
53+
selectable: true,
54+
style: TextStyle(color: logLine.contains("[SERVER]") ? Colors.redAccent : logLine.contains("WARNING") ? Colors.amberAccent : logLine.contains("FINE") ? Colors.grey : null)
55+
);
56+
}
57+
),
58+
)
59+
)
60+
],
61+
),
62+
)
63+
],
64+
),
65+
);
66+
}
67+
}

lib/vars/global.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@ class Global with ChangeNotifier {
1414
final Logger logger = Logger("Global");
1515
final Logger uiLogger = Logger("UI");
1616
Global();
17+
1718
late bool firstStart; // 是否为第一次使用
1819
bool inited = false; //是否初始化完成
1920
late bool updateLogRequire; //是否需要显示更新日志
2021
late bool isWideScreen; // 设备是否是宽屏幕
2122
late final SharedPreferences prefs; // 储存实例
2223
bool backupFontLoaded = false;
2324
late bool modelTTSDownloaded = false;
25+
List<String> internalLogCapture = [];
2426

2527
/// the setting data
2628
Map<String, dynamic> _settingData = {
@@ -132,6 +134,7 @@ class Global with ChangeNotifier {
132134
/// ``` json
133135
/// {
134136
/// "User": "",
137+
/// "Debug": false,
135138
/// "LastVersion": StaticsVar.appVersion,
136139
/// "regular": {
137140
/// "theme": 9,
@@ -273,6 +276,9 @@ class Global with ChangeNotifier {
273276
if (kDebugMode || settingData["Debug"]) {
274277
debugPrint('${record.time}-[${record.loggerName}][${record.level.name}]: ${record.message}');
275278
}
279+
if(settingData["Debug"]){
280+
internalLogCapture.add('${record.time}-[${record.loggerName}][${record.level.name}]: ${record.message}');
281+
}
276282
});
277283
}
278284

0 commit comments

Comments
 (0)