diff --git a/lib/edge_state.dart b/lib/edge_state.dart index acce6ae..5281a25 100644 --- a/lib/edge_state.dart +++ b/lib/edge_state.dart @@ -17,4 +17,9 @@ class EdgeLogger with ChangeNotifier { logList.add(log); notifyListeners(); } + + void clearLog() { + logList.clear(); + notifyListeners(); + } } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index ac8d6d2..a1056ff 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -23,5 +23,6 @@ "chooseLanguage": "Choose Language", "successfullyConnected": "Connected", "macOrIpAlreadyInUse": "MAC or IP address already in use or not released yet by supernode", - "otherReasonFail": "Connect fail" + "otherReasonFail": "Connect fail", + "clearLog": "Clear log" } \ No newline at end of file diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index bea9002..b85485e 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -23,5 +23,6 @@ "chooseLanguage": "选择语言", "successfullyConnected": "已连接", "macOrIpAlreadyInUse": "MAC或IP地址已被占用或者未被中转服务器释放", - "otherReasonFail": "连接失败" + "otherReasonFail": "连接失败", + "clearLog": "清除日志" } \ No newline at end of file diff --git a/lib/logger_page.dart b/lib/logger_page.dart index aa9d100..898710f 100644 --- a/lib/logger_page.dart +++ b/lib/logger_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:winui_n2n/edge_state.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class LoggerPage extends StatelessWidget { const LoggerPage({super.key}); @@ -9,12 +10,26 @@ class LoggerPage extends StatelessWidget { return ListenableBuilder( listenable: EdgeState.instance.logger, builder: (context, child) { - return ListView( - children: EdgeState.instance.logger.logList.map( - (e) { - return SelectableText(e); - }, - ).toList(), + return Stack( + children: [ + ListView( + children: EdgeState.instance.logger.logList.map( + (e) { + return SelectableText(e); + }, + ).toList(), + ), + Positioned( + right: 10, + bottom: 10, + child: FloatingActionButton( + tooltip: AppLocalizations.of(context)!.clearLog, + onPressed: () { + EdgeState.instance.logger.clearLog(); + }, + child: const Icon(Icons.clear), + )), + ], ); }, );