From db52de7b56382d3a47f6b450e124b1bb72fdd0f5 Mon Sep 17 00:00:00 2001 From: Cxx0822 <1556464090@qq.com> Date: Sun, 26 Apr 2026 17:22:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 39 ++++------ lib/pages/task_page.dart | 67 ++++++++++-------- lib/widgets/schedule_dialog.dart | 53 ++++++++------ lib/widgets/task_dialog.dart | 2 +- lib/widgets/task_item.dart | 22 +++--- pubspec.lock | 10 ++- pubspec.yaml | 2 +- .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + windows/runner/main.cpp | 2 +- windows/runner/resources/app_icon.ico | Bin 33772 -> 171755 bytes 11 files changed, 108 insertions(+), 93 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index e83819e..f9f48ee 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,8 +3,11 @@ import 'package:task_hub/pages/home_page.dart'; import 'package:task_hub/pages/schedule_page.dart'; import 'package:task_hub/pages/settings_page.dart'; import 'package:task_hub/pages/task_page.dart'; +import 'package:window_size/window_size.dart'; void main() { + WidgetsFlutterBinding.ensureInitialized(); + setWindowMinSize(const Size(800, 600)); runApp(const TaskHubApp()); } @@ -14,10 +17,11 @@ class TaskHubApp extends StatelessWidget { @override Widget build(BuildContext context) { return FluentApp( - title: 'TaskHub', + title: '拾光记', themeMode: ThemeMode.system, theme: FluentThemeData( fontFamily: 'CustomFont', + accentColor: Colors.purple ), debugShowCheckedModeBanner: false, home: const MainLayout(), @@ -34,53 +38,36 @@ class MainLayout extends StatefulWidget { class _MainLayoutState extends State { int _currentIndex = 0; - + @override Widget build(BuildContext context) { return NavigationView( - titleBar: TitleBar( - icon: const FlutterLogo(), - title: const Text('TaskHub') - ), + titleBar: TitleBar(title: const Text('拾光记')), pane: NavigationPane( selected: _currentIndex, onChanged: (index) => setState(() => _currentIndex = index), - size: NavigationPaneSize( - openWidth: 150 - ), + size: NavigationPaneSize(openWidth: 150), items: [ PaneItem( icon: const Icon(FluentIcons.home), title: const Text('首页'), - body: Container( - color: Colors.white, - child: const HomePage(), - ), + body: Container(color: Colors.white, child: const HomePage()), ), PaneItem( icon: const Icon(FluentIcons.check_list), title: const Text('待办'), - body: Container( - color: Colors.white, - child: const TaskPage(), - ), + body: Container(color: Colors.white, child: const TaskPage()), ), PaneItem( icon: const Icon(FluentIcons.calendar), title: const Text('日程'), - body: Container( - color: Colors.white, - child: const SchedulePage(), - ), + body: Container(color: Colors.white, child: const SchedulePage()), ), PaneItemSeparator(), PaneItem( icon: const Icon(FluentIcons.settings), title: const Text('设置'), - body: Container( - color: Colors.white, - child: const SettingsPage(), - ), + body: Container(color: Colors.white, child: const SettingsPage()), ), ], footerItems: [ @@ -96,4 +83,4 @@ class _MainLayoutState extends State { ), ); } -} \ No newline at end of file +} diff --git a/lib/pages/task_page.dart b/lib/pages/task_page.dart index 3679e00..ab4749d 100644 --- a/lib/pages/task_page.dart +++ b/lib/pages/task_page.dart @@ -20,12 +20,11 @@ class _TaskPageState extends State { String _sortBy = 'created'; List get _filteredTasks { - List tasks = - _tasks.where((task) { - if (_filter == 'active') return !task.isCompleted; - if (_filter == 'completed') return task.isCompleted; - return true; - }).toList(); + List tasks = _tasks.where((task) { + if (_filter == 'active') return !task.isCompleted; + if (_filter == 'completed') return task.isCompleted; + return true; + }).toList(); tasks.sort((a, b) { switch (_sortBy) { @@ -48,32 +47,30 @@ class _TaskPageState extends State { void _addTask() { showDialog( context: context, - builder: - (context) => TaskDialog( - onSave: (task) { - setState(() { - _tasks.add(task); - }); - }, - ), + builder: (context) => TaskDialog( + onSave: (task) { + setState(() { + _tasks.add(task); + }); + }, + ), ); } void _editTask(Task task) { showDialog( context: context, - builder: - (context) => TaskDialog( - task: task, - onSave: (editedTask) { - setState(() { - final index = _tasks.indexWhere((t) => t.id == task.id); - if (index != -1) { - _tasks[index] = editedTask; - } - }); - }, - ), + builder: (context) => TaskDialog( + task: task, + onSave: (editedTask) { + setState(() { + final index = _tasks.indexWhere((t) => t.id == task.id); + if (index != -1) { + _tasks[index] = editedTask; + } + }); + }, + ), ); } @@ -137,7 +134,7 @@ class _TaskPageState extends State { final activeCount = _tasks.length - completedCount; return Card( - backgroundColor: Colors.grey[20], + backgroundColor: FluentTheme.of(context).accentColor.lighter, child: Padding( padding: const EdgeInsets.all(12.0), child: Row( @@ -157,10 +154,14 @@ class _TaskPageState extends State { children: [ Text( value, - style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold), + style: TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + color: Colors.white, + ), ), const SizedBox(height: 4), - Text(label, style: TextStyle(color: Colors.grey)), + Text(label, style: TextStyle(color: Colors.white)), ], ); } @@ -232,7 +233,11 @@ class _TaskPageState extends State { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Icon(FluentIcons.check_list, size: 64, color: Colors.blue), + Icon( + FluentIcons.check_list, + size: 64, + color: FluentTheme.of(context).accentColor, + ), const SizedBox(height: 20), const Text( '还没有任务', @@ -256,7 +261,7 @@ class _TaskPageState extends State { task: task, onToggleComplete: () => _toggleTaskComplete(task), onEdit: () => _editTask(task), - onDelete: () => _deleteTask(task.id) + onDelete: () => _deleteTask(task.id), ), ); }, diff --git a/lib/widgets/schedule_dialog.dart b/lib/widgets/schedule_dialog.dart index c48e982..41c08e1 100644 --- a/lib/widgets/schedule_dialog.dart +++ b/lib/widgets/schedule_dialog.dart @@ -23,7 +23,9 @@ class _ScheduleDialogState extends State { @override void initState() { super.initState(); - _titleController = TextEditingController(text: widget.schedule?.title ?? ''); + _titleController = TextEditingController( + text: widget.schedule?.title ?? '', + ); _selectedStartTime = widget.schedule?.startTime; _selectedEndTime = widget.schedule?.endTime; _selectedScheduleDate = widget.schedule?.scheduleDate; @@ -35,34 +37,43 @@ class _ScheduleDialogState extends State { super.dispose(); } - void onConfirmClick()async { + void onConfirmClick() async { if (_selectedStartTime == null) { - await displayInfoBar(context, builder: (context, close) { - return InfoBar( - title: const Text('请选择开始时间'), - severity: InfoBarSeverity.error, - ); - }); + await displayInfoBar( + context, + builder: (context, close) { + return InfoBar( + title: const Text('请选择开始时间'), + severity: InfoBarSeverity.error, + ); + }, + ); return; } if (_selectedEndTime == null) { - await displayInfoBar(context, builder: (context, close) { - return InfoBar( - title: const Text('请选择结束时间'), - severity: InfoBarSeverity.error, - ); - }); + await displayInfoBar( + context, + builder: (context, close) { + return InfoBar( + title: const Text('请选择结束时间'), + severity: InfoBarSeverity.error, + ); + }, + ); return; } if (!_selectedEndTime!.isAfter(_selectedStartTime!)) { - await displayInfoBar(context, builder: (context, close) { - return InfoBar( - title: const Text('结束时间必须晚于开始时间'), - severity: InfoBarSeverity.error, - ); - }); + await displayInfoBar( + context, + builder: (context, close) { + return InfoBar( + title: const Text('结束时间必须晚于开始时间'), + severity: InfoBarSeverity.error, + ); + }, + ); return; } @@ -82,7 +93,7 @@ class _ScheduleDialogState extends State { @override Widget build(BuildContext context) { return ContentDialog( - title: Text(widget.schedule == null ? '添加日程' : '编辑日程'), + title: Center(child: Text(widget.schedule == null ? '添加日程' : '编辑日程')), content: _buildForm(), actions: [ Button( diff --git a/lib/widgets/task_dialog.dart b/lib/widgets/task_dialog.dart index 4df39de..2d798b9 100644 --- a/lib/widgets/task_dialog.dart +++ b/lib/widgets/task_dialog.dart @@ -57,7 +57,7 @@ class _TaskDialogState extends State { @override Widget build(BuildContext context) { return ContentDialog( - title: Text(widget.task == null ? '添加任务' : '编辑任务'), + title: Center(child: Text(widget.task == null ? '添加任务' : '编辑任务')), content: _buildForm(), actions: [ Button( diff --git a/lib/widgets/task_item.dart b/lib/widgets/task_item.dart index acb8ee6..9dd5826 100644 --- a/lib/widgets/task_item.dart +++ b/lib/widgets/task_item.dart @@ -36,12 +36,12 @@ class TaskItem extends StatelessWidget { children: [ _buildPriorityIndicator(task.priority), const SizedBox(width: 8), - Expanded(child: _buildTitle()), + Expanded(child: _buildTitle(context)), ], ), - const SizedBox(height: 2), + const SizedBox(height: 4), if (task.desc != null && task.desc!.isNotEmpty) _buildDesc(), - const SizedBox(height: 2), + const SizedBox(height: 4), if (task.dueDate != null || task.scheduleDate != null) _buildDate(), ], @@ -62,14 +62,14 @@ class TaskItem extends StatelessWidget { ); } - Widget _buildTitle() { + Widget _buildTitle(BuildContext context) { return Text( task.title, style: TextStyle( fontSize: 16, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.bold, decoration: task.isCompleted ? TextDecoration.lineThrough : null, - color: task.isCompleted ? Colors.grey : Colors.red, + color: task.isCompleted ? Colors.grey[100] : FluentTheme.of(context).accentColor, ), ); } @@ -78,7 +78,7 @@ class TaskItem extends StatelessWidget { return Text( task.desc!, style: TextStyle( - color: Colors.grey, + color: Colors.grey[150], fontSize: 14, decoration: task.isCompleted ? TextDecoration.lineThrough : null, ), @@ -89,20 +89,20 @@ class TaskItem extends StatelessWidget { return Row( children: [ if (task.dueDate != null) ...[ - const Icon(FluentIcons.calendar, size: 12, color: Colors.grey), + Icon(FluentIcons.calendar, size: 12, color: Colors.grey), const SizedBox(width: 4), Text( '截止日期: ${_formatDate(task.dueDate!)}', - style: const TextStyle(color: Colors.grey, fontSize: 12), + style: TextStyle(color: Colors.grey, fontSize: 12), ), const SizedBox(width: 4), ], if (task.scheduleDate != null) ...[ - const Icon(FluentIcons.clock, size: 12, color: Colors.grey), + Icon(FluentIcons.clock, size: 12, color: Colors.grey), const SizedBox(width: 4), Text( '提醒日期: ${_formatDate(task.scheduleDate!)}', - style: const TextStyle(color: Colors.grey, fontSize: 12), + style: TextStyle(color: Colors.grey, fontSize: 12), ), ], ], diff --git a/pubspec.lock b/pubspec.lock index fa108c2..1a66c52 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -453,6 +453,14 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" + window_size: + dependency: "direct main" + description: + name: window_size + sha256: "8ba77a3df7bd686e60b21e699e60e1b103e6515950954b46c4fb6f513586e278" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.0" xdg_directories: dependency: transitive description: @@ -470,5 +478,5 @@ packages: source: hosted version: "6.6.1" sdks: - dart: ">=3.8.0 <4.0.0" + dart: ">=3.10.0 <4.0.0" flutter: ">=3.32.0" diff --git a/pubspec.yaml b/pubspec.yaml index 907fcc8..1633c95 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1 +1 @@ -name: task_hub description: "A new Flutter project." # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. version: 1.0.0+1 environment: sdk: ^3.7.0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions # consider running `flutter pub upgrade --major-versions`. Alternatively, # dependencies can be manually updated by changing the version numbers below to # the latest version available on pub.dev. To see which dependencies have newer # versions available, run `flutter pub outdated`. dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 flutter_local_notifications: ^19.5.0 syncfusion_flutter_calendar: ^30.1.37 fluent_ui: ^4.15.0 omni_datetime_picker: ^2.3.1 intl: ^0.20.2 dev_dependencies: flutter_test: sdk: flutter # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. flutter_lints: ^5.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter packages. flutter: uses-material-design: true assets: - assets/icons/task.png fonts: - family: CustomFont fonts: - asset: fonts/custom.ttf \ No newline at end of file +name: task_hub description: "待办事项、日程安排" # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. version: 1.0.0+1 environment: sdk: ^3.10.0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions # consider running `flutter pub upgrade --major-versions`. Alternatively, # dependencies can be manually updated by changing the version numbers below to # the latest version available on pub.dev. To see which dependencies have newer # versions available, run `flutter pub outdated`. dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 flutter_local_notifications: ^19.5.0 syncfusion_flutter_calendar: ^30.1.37 fluent_ui: ^4.15.0 omni_datetime_picker: ^2.3.1 intl: ^0.20.2 window_size: ^0.1.0 dev_dependencies: flutter_test: sdk: flutter # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. flutter_lints: ^5.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter packages. flutter: uses-material-design: true assets: - assets/icons/ fonts: - family: CustomFont fonts: - asset: fonts/custom.ttf \ No newline at end of file diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8b6d468..9372fc5 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + WindowSizePluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowSizePlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 93f25e1..2f5dad0 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + window_size ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp index 3d36cf7..d4f7cbd 100644 --- a/windows/runner/main.cpp +++ b/windows/runner/main.cpp @@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, FlutterWindow window(project); Win32Window::Point origin(10, 10); Win32Window::Size size(1280, 720); - if (!window.Create(L"task_hub", origin, size)) { + if (!window.Create(L"TaskHub", origin, size)) { return EXIT_FAILURE; } window.SetQuitOnClose(true); diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico index c04e20caf6370ebb9253ad831cc31de4a9c965f6..fe61b28f504ed8d03c03162d9a03761d691fbacc 100644 GIT binary patch literal 171755 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