diff --git a/assets/countdown/alen.png b/assets/countdown/alen.png new file mode 100644 index 0000000..44a8523 Binary files /dev/null and b/assets/countdown/alen.png differ diff --git a/assets/countdown/bis.png b/assets/countdown/bis.png deleted file mode 100644 index fb0de63..0000000 Binary files a/assets/countdown/bis.png and /dev/null differ diff --git a/assets/countdown/coramor.png b/assets/countdown/coramor.png new file mode 100644 index 0000000..68189ad Binary files /dev/null and b/assets/countdown/coramor.png differ diff --git a/assets/countdown/fortuna.png b/assets/countdown/fortuna.png new file mode 100644 index 0000000..2172460 Binary files /dev/null and b/assets/countdown/fortuna.png differ diff --git a/assets/countdown/iae.png b/assets/countdown/iae.png index 40138bc..74afd5e 100644 Binary files a/assets/countdown/iae.png and b/assets/countdown/iae.png differ diff --git a/assets/countdown/luminalia.png b/assets/countdown/luminalia.png new file mode 100644 index 0000000..a6610c2 Binary files /dev/null and b/assets/countdown/luminalia.png differ diff --git a/assets/countdown/pirate.png b/assets/countdown/pirate.png new file mode 100644 index 0000000..1d1017a Binary files /dev/null and b/assets/countdown/pirate.png differ diff --git a/assets/countdown/red.png b/assets/countdown/red.png new file mode 100644 index 0000000..e997d3f Binary files /dev/null and b/assets/countdown/red.png differ diff --git a/lib/common/conf.dart b/lib/common/conf.dart index cd67049..b584f4e 100644 --- a/lib/common/conf.dart +++ b/lib/common/conf.dart @@ -13,8 +13,8 @@ import 'package:window_manager/window_manager.dart'; import '../base/ui.dart'; class AppConf { - static const String appVersion = "2.9.7 Beta"; - static const int appVersionCode = 23; + static const String appVersion = "2.9.8 Beta"; + static const int appVersionCode = 24; static const String appVersionDate = "2023-11-01"; static const String gitlabHomeUrl = diff --git a/lib/ui/home/countdown/countdown_dialog_ui.dart b/lib/ui/home/countdown/countdown_dialog_ui.dart new file mode 100644 index 0000000..0f09bf3 --- /dev/null +++ b/lib/ui/home/countdown/countdown_dialog_ui.dart @@ -0,0 +1,92 @@ +import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; +import 'package:starcitizen_doctor/base/ui.dart'; +import 'package:starcitizen_doctor/widgets/countdown_time_text.dart'; + +import 'countdown_dialog_ui_model.dart'; + +class CountdownDialogUI extends BaseUI { + @override + Widget? buildBody(BuildContext context, CountdownDialogUIModel model) { + return ContentDialog( + constraints: + BoxConstraints(maxWidth: MediaQuery.of(context).size.width * .65), + title: Row( + children: [ + IconButton( + icon: const Icon( + FluentIcons.back, + size: 22, + ), + onPressed: model.onBack), + const SizedBox(width: 12), + const Text("节日倒计时"), + ], + ), + content: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.only(left: 12, right: 12), + child: Column( + children: [ + AlignedGridView.count( + crossAxisCount: 3, + mainAxisSpacing: 12, + crossAxisSpacing: 12, + itemCount: model.countdownFestivalListData.length, + shrinkWrap: true, + itemBuilder: (BuildContext context, int index) { + final item = model.countdownFestivalListData[index]; + return Container( + decoration: BoxDecoration( + color: FluentTheme.of(context).cardColor, + borderRadius: BorderRadius.circular(12), + ), + child: Padding( + padding: const EdgeInsets.all(12), + child: Row( + children: [ + if (item.icon != null && item.icon != "") ...[ + ClipRRect( + borderRadius: BorderRadius.circular(1000), + child: Image.asset( + "assets/countdown/${item.icon}", + width: 38, + height: 38, + ), + ), + const SizedBox(width: 12), + ] else + const SizedBox(width: 50), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "${item.name}", + ), + CountdownTimeText( + targetTime: DateTime.fromMillisecondsSinceEpoch( + item.time ?? 0), + ) + ], + ) + ], + ), + ), + ); + }, + ), + const SizedBox(height: 12), + Text( + "* 以上节日日期由人工收录、维护,可能存在错误,欢迎反馈!", + style: TextStyle( + fontSize: 13, color: Colors.white.withOpacity(.3)), + ) + ], + ), + ), + ), + ); + } + + @override + String getUITitle(BuildContext context, CountdownDialogUIModel model) => ""; +} diff --git a/lib/ui/home/countdown/countdown_dialog_ui_model.dart b/lib/ui/home/countdown/countdown_dialog_ui_model.dart new file mode 100644 index 0000000..1c70ca8 --- /dev/null +++ b/lib/ui/home/countdown/countdown_dialog_ui_model.dart @@ -0,0 +1,12 @@ +import 'package:starcitizen_doctor/base/ui_model.dart'; +import 'package:starcitizen_doctor/data/countdown_festival_item_data.dart'; + +class CountdownDialogUIModel extends BaseUIModel { + final List countdownFestivalListData; + + CountdownDialogUIModel(this.countdownFestivalListData); + + onBack() { + Navigator.pop(context!); + } +} diff --git a/lib/ui/home/home_ui.dart b/lib/ui/home/home_ui.dart index 93345df..c7557e2 100644 --- a/lib/ui/home/home_ui.dart +++ b/lib/ui/home/home_ui.dart @@ -205,70 +205,76 @@ class HomeUI extends BaseUI { ), ), const SizedBox(height: 12), - Container( - width: width + 24, - decoration: BoxDecoration( - color: FluentTheme.of(context).cardColor, - borderRadius: BorderRadius.circular(12)), - child: Padding( - padding: const EdgeInsets.only( - left: 12, right: 12, top: 6, bottom: 6), - child: (model.countdownFestivalListData == null) - ? SizedBox( - width: width, - height: 62, - child: const Center( - child: ProgressRing(), - ), - ) - : SizedBox( - width: width, - height: 62, - child: Swiper( - itemCount: - model.countdownFestivalListData!.length, - autoplay: true, - autoplayDelay: 5000, - itemBuilder: (context, index) { - final item = model - .countdownFestivalListData![index]; - return Row( - mainAxisAlignment: - MainAxisAlignment.spaceEvenly, - children: [ - if (item.icon != null && - item.icon != "") ...[ - ClipRRect( - borderRadius: - BorderRadius.circular(1000), - child: Image.asset( - "assets/countdown/${item.icon}", - width: 48, - height: 48, - ), - ), - ], - Column( + Tilt( + borderRadius: BorderRadius.circular(12), + shadowConfig: const ShadowConfig(disable: true), + child: GestureDetector( + onTap: ()=> model.onTapFestival(), + child: Container( + width: width + 24, + decoration: BoxDecoration( + color: FluentTheme.of(context).cardColor), + child: Padding( + padding: const EdgeInsets.only( + left: 12, right: 12, top: 6, bottom: 6), + child: (model.countdownFestivalListData == null) + ? SizedBox( + width: width, + height: 62, + child: const Center( + child: ProgressRing(), + ), + ) + : SizedBox( + width: width, + height: 62, + child: Swiper( + itemCount: model + .countdownFestivalListData!.length, + autoplay: true, + autoplayDelay: 5000, + itemBuilder: (context, index) { + final item = model + .countdownFestivalListData![index]; + return Row( + mainAxisAlignment: + MainAxisAlignment.spaceEvenly, children: [ - Text( - item.name ?? "", - style: const TextStyle( - fontSize: 15), - ), - const SizedBox(height: 3), - CountdownTimeText( - targetTime: DateTime - .fromMillisecondsSinceEpoch( - item.time ?? 0), + if (item.icon != null && + item.icon != "") ...[ + ClipRRect( + borderRadius: + BorderRadius.circular(1000), + child: Image.asset( + "assets/countdown/${item.icon}", + width: 48, + height: 48, + ), + ), + ], + Column( + children: [ + Text( + item.name ?? "", + style: const TextStyle( + fontSize: 15), + ), + const SizedBox(height: 3), + CountdownTimeText( + targetTime: DateTime + .fromMillisecondsSinceEpoch( + item.time ?? 0), + ), + ], ), ], - ), - ], - ); - }, - ), - ), - )), + ); + }, + ), + ), + )), + ), + ), ], ), if (model.appWebLocalizationVersionsData == null) diff --git a/lib/ui/home/home_ui_model.dart b/lib/ui/home/home_ui_model.dart index 42711ec..8351f33 100644 --- a/lib/ui/home/home_ui_model.dart +++ b/lib/ui/home/home_ui_model.dart @@ -14,6 +14,7 @@ import 'package:starcitizen_doctor/common/helper/system_helper.dart'; import 'package:starcitizen_doctor/data/app_placard_data.dart'; import 'package:starcitizen_doctor/data/app_web_localization_versions_data.dart'; import 'package:starcitizen_doctor/data/countdown_festival_item_data.dart'; +import 'package:starcitizen_doctor/ui/home/countdown/countdown_dialog_ui_model.dart'; import 'package:starcitizen_doctor/ui/home/dialogs/md_content_dialog_ui.dart'; import 'package:starcitizen_doctor/ui/home/dialogs/md_content_dialog_ui_model.dart'; import 'package:starcitizen_doctor/ui/home/localization/localization_ui_model.dart'; @@ -24,6 +25,7 @@ import 'package:starcitizen_doctor/ui/home/webview/webview.dart'; import 'package:starcitizen_doctor/ui/home/webview/webview_localization_capture_ui_model.dart'; import 'package:url_launcher/url_launcher_string.dart'; +import 'countdown/countdown_dialog_ui.dart'; import 'localization/localization_ui.dart'; import 'performance/performance_ui.dart'; import 'webview/webview_localization_capture_ui.dart'; @@ -519,4 +521,16 @@ class HomeUIModel extends BaseUIModel { _isGameRunning[installPath] = false; notifyListeners(); } + + onTapFestival() { + if (countdownFestivalListData == null) return; + showDialog( + context: context!, + builder: (context) { + return BaseUIContainer( + uiCreate: () => CountdownDialogUI(), + modelCreate: () => + CountdownDialogUIModel(countdownFestivalListData!)); + }); + } }