diff --git a/.github/workflows/fastlane.action.yaml b/.github/workflows/fastlane.action.yaml index e0d79060..dafcbf5a 100644 --- a/.github/workflows/fastlane.action.yaml +++ b/.github/workflows/fastlane.action.yaml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout source code' - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: 'Decrypt secret configuration' @@ -34,7 +34,7 @@ jobs: - name: 'Generate changelog' run: ./.github/scripts/generate_changelog.sh - name: 'Setup Ruby' - uses: ruby/setup-ruby@v1.152.0 + uses: ruby/setup-ruby@v1.153.0 with: ruby-version: '3.0' bundler-cache: true @@ -45,9 +45,11 @@ jobs: with: lane: ${{ inputs.lane }} subdirectory: 'android' + env: + SUPPLY_UPLOAD_MAX_RETRIES: 5 - name: 'Generate Github release' # Only run on new tag if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v1 with: - body_path: ${{ env.CHANGELOG_PATH_EN_US }} \ No newline at end of file + body_path: ${{ env.CHANGELOG_PATH_EN_US }} diff --git a/.github/workflows/flutter.analyze-test.action.yaml b/.github/workflows/flutter.analyze-test.action.yaml index 6f350aa2..cc6cf467 100644 --- a/.github/workflows/flutter.analyze-test.action.yaml +++ b/.github/workflows/flutter.analyze-test.action.yaml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout source code' - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: 'Setup flutter action' uses: subosito/flutter-action@v2.10.0 with: @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout source code' - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: 'Setup flutter action' uses: subosito/flutter-action@v2.10.0 with: @@ -43,7 +43,7 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout source code' - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: 'Decrypt secret configuration' run: ./.github/scripts/decrypt_secret.sh env: diff --git a/.github/workflows/flutter.build.action.yaml b/.github/workflows/flutter.build.action.yaml index 136821b3..bc50c791 100644 --- a/.github/workflows/flutter.build.action.yaml +++ b/.github/workflows/flutter.build.action.yaml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout source code' - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: 'Decrypt secret configuration' @@ -83,7 +83,7 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout source code' - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: 'Decrypt secret configuration' run: ./.github/scripts/decrypt_secret.sh env: @@ -97,7 +97,7 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout source code' - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: 'Decrypt secret configuration' run: ./.github/scripts/decrypt_secret.sh env: diff --git a/.github/workflows/pages.deploy.yaml b/.github/workflows/pages.deploy.yaml index 7a044656..357ada72 100644 --- a/.github/workflows/pages.deploy.yaml +++ b/.github/workflows/pages.deploy.yaml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Pages uses: actions/configure-pages@v3 - name: Upload artifact @@ -25,4 +25,4 @@ jobs: path: 'page' - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v2 \ No newline at end of file + uses: actions/deploy-pages@v2 diff --git a/android/Gemfile b/android/Gemfile index 8bb47be9..0a4644c8 100644 --- a/android/Gemfile +++ b/android/Gemfile @@ -1,3 +1,3 @@ source "https://rubygems.org" -gem 'fastlane', '2.214.0' \ No newline at end of file +gem 'fastlane', '2.215.1' \ No newline at end of file diff --git a/android/Gemfile.lock b/android/Gemfile.lock index 413b6cb8..326b8a4e 100644 --- a/android/Gemfile.lock +++ b/android/Gemfile.lock @@ -3,13 +3,13 @@ GEM specs: CFPropertyList (3.0.6) rexml - addressable (2.8.4) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.786.0) - aws-sdk-core (3.178.0) + aws-partitions (1.824.0) + aws-sdk-core (3.181.1) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) @@ -17,8 +17,8 @@ GEM aws-sdk-kms (1.71.0) aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.130.0) - aws-sdk-core (~> 3, >= 3.177.0) + aws-sdk-s3 (1.134.0) + aws-sdk-core (~> 3, >= 3.181.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.6) aws-sigv4 (1.6.0) @@ -36,7 +36,7 @@ GEM unf (>= 0.0.5, < 1.0.0) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.100.0) + excon (0.103.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -66,7 +66,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.7) - fastlane (2.214.0) + fastlane (2.215.1) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -87,6 +87,7 @@ GEM google-apis-playcustomapp_v1 (~> 0.1) google-cloud-storage (~> 1.31) highline (~> 2.0) + http-cookie (~> 1.0.5) json (< 3.0.0) jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) @@ -98,7 +99,7 @@ GEM security (= 0.1.3) simctl (~> 1.6.3) terminal-notifier (>= 2.0.0, < 3.0.0) - terminal-table (>= 1.4.5, < 2.0.0) + terminal-table (~> 3) tty-screen (>= 0.6.3, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) @@ -106,9 +107,9 @@ GEM xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.45.0) + google-apis-androidpublisher_v3 (0.49.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.0) + google-apis-core (0.11.1) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -137,10 +138,9 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.6.0) + googleauth (1.8.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) - memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) @@ -151,9 +151,8 @@ GEM jmespath (1.6.2) json (2.6.3) jwt (2.7.1) - memoist (0.16.2) mini_magick (4.12.0) - mini_mime (1.1.2) + mini_mime (1.1.5) multi_json (1.15.0) multipart-post (2.3.0) nanaimo (0.3.0) @@ -168,12 +167,12 @@ GEM trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.5) + rexml (3.2.6) rouge (2.0.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.17.0) + signet (0.18.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) @@ -182,8 +181,8 @@ GEM CFPropertyList naturally terminal-notifier (2.0.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) trailblazer-option (0.1.2) tty-cursor (0.7.1) tty-screen (0.8.1) @@ -193,7 +192,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.8.2) - unicode-display_width (1.8.0) + unicode-display_width (2.4.2) webrick (1.8.1) word_wrap (1.0.0) xcodeproj (1.22.0) @@ -209,11 +208,12 @@ GEM xcpretty (~> 0.2, >= 0.0.7) PLATFORMS + x64-mingw-ucrt x64-mingw32 x86_64-linux DEPENDENCIES - fastlane (= 2.214.0) + fastlane (= 2.215.1) BUNDLED WITH - 2.3.15 + 2.4.10 diff --git a/changelogs/CHANGELOG_en.md b/changelogs/CHANGELOG_en.md index 1f124873..8d8e5a79 100644 --- a/changelogs/CHANGELOG_en.md +++ b/changelogs/CHANGELOG_en.md @@ -1,3 +1,16 @@ +# **v2.4.2** : + +- *Fix*: + - Fixed a bug that caused the display of the "About" page to crash in landscape mode +*** +# **v2.4.1** : + +- *Fix*: + - Fixed a bug that did not display the correct formatting of times in notifications + - Fixed a bug that prevented the settings window from displaying correctly in landscape mode +- *UI*: + - The "About" window now has a landscape mode +*** # **v2.4.0** : - The user can now choose the time format of the displayed hours diff --git a/changelogs/CHANGELOG_es.md b/changelogs/CHANGELOG_es.md index 0b815cb4..42695681 100644 --- a/changelogs/CHANGELOG_es.md +++ b/changelogs/CHANGELOG_es.md @@ -1,3 +1,16 @@ +# **v2.4.2** : + +- *Fix*: + - Se corrigió un error que causaba que la visualización de la página "Acerca de" fallara en modo horizontal +*** +# **v2.4.1** : + +- *Arreglar*: + - Se corrigió un error que no mostraba el formato correcto de los tiempos en las notificaciones. + - Se corrigió un error que impedía que la ventana de configuración se mostrara correctamente en modo horizontal. +- *UI*: + - La ventana "Acerca de" ahora tiene un modo horizontal +*** # **v2.4.0** : - El usuario ahora puede elegir el formato de hora de las horas mostradas. diff --git a/changelogs/CHANGELOG_fr.md b/changelogs/CHANGELOG_fr.md index 626a3285..801b32bb 100644 --- a/changelogs/CHANGELOG_fr.md +++ b/changelogs/CHANGELOG_fr.md @@ -1,3 +1,16 @@ +# **v2.4.2** : + +- *Fix*: + - Correction d'un bug qui faisait planter l'affichage de la page "A propos" en mode paysage +*** +# **v2.4.1** : + +- *Fix*: + - Correction d'un bug qui n'affichait pas le bon formattage des heures dans les notifications + - Correction d'un bug qui empêchait la fenêtre des réglages de correctement s'afficher en mode paysage +- *UI*: + - La fenêtre "A propos" à maintenant un mode paysage +*** # **v2.4.0** : - L'utilisateur peut désormais choisir le format horaire des heures affichées diff --git a/lib/screens/chabo_about_screen/chabo_about_screen.dart b/lib/screens/chabo_about_screen/chabo_about_screen.dart index e05b9d43..d1179a2e 100644 --- a/lib/screens/chabo_about_screen/chabo_about_screen.dart +++ b/lib/screens/chabo_about_screen/chabo_about_screen.dart @@ -99,61 +99,75 @@ class ChaboAboutScreen extends StatelessWidget { titlePadding: EdgeInsets.zero, expandedTitleScale: 1, title: Padding( - padding: const EdgeInsets.only(bottom: 15), + padding: const EdgeInsets.symmetric(horizontal: 50.0), child: Row( - mainAxisAlignment: MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Flexible( child: IconTheme( data: Theme.of(context).iconTheme, - child: Container( - decoration: const BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.all( - Radius.circular( - CustomProperties.borderRadius, + child: Row( + children: [ + Container( + decoration: const BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.all( + Radius.circular( + CustomProperties.borderRadius, + ), + ), ), + child: _iconWidget, ), - ), - child: _iconWidget, - ), - ), - ), - Expanded( - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 16.0, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - children: [ - Text( - snapshot.data!.appName, - style: Theme.of(context) - .textTheme - .headlineSmall! - .copyWith( - fontWeight: FontWeight.bold, - fontSize: 30, + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + ), + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + mainAxisAlignment: + MainAxisAlignment.center, + children: [ + Row( + children: [ + Text( + snapshot.data!.appName, + style: Theme.of(context) + .textTheme + .headlineSmall! + .copyWith( + fontWeight: + FontWeight.bold, + fontSize: 30, + ), ), - ), - Text( - ' | v${snapshot.data!.version} (${snapshot.data!.buildNumber})', - style: textTheme.bodyMedium, - ), - ], - ), - Text( - Const.legalLease, - style: textTheme.bodySmall!.copyWith(), + Text( + ' | v${snapshot.data!.version} (${snapshot.data!.buildNumber})', + style: textTheme.bodyMedium, + ), + ], + ), + Text( + Const.legalLease, + style: + textTheme.bodySmall!.copyWith(), + ), + ], + ), ), ], ), ), ), + DeviceHelper.isPortrait(context) + ? const SizedBox.shrink() + : Flexible( + child: _PageLinksWidget( + packageInfo: snapshot.data!, + iconWidget: _iconWidget, + ), + ), ], ), ), @@ -202,22 +216,17 @@ class ChaboAboutScreen extends StatelessWidget { const SizedBox( height: 15, ), - Padding( - padding: const EdgeInsets.symmetric( - horizontal: 35.0, - ), - child: Wrap( - alignment: WrapAlignment.center, - runSpacing: 20, - children: [ - _PageLinksWidget( - packageInfo: snapshot.data!, - iconWidget: _iconWidget, - ), - const _StoreRateWidget(), - ], - ), - ), + DeviceHelper.isPortrait(context) + ? Padding( + padding: const EdgeInsets.symmetric( + horizontal: 35.0, + ), + child: _PageLinksWidget( + packageInfo: snapshot.data!, + iconWidget: _iconWidget, + ), + ) + : const SizedBox.shrink(), ], ), ), diff --git a/lib/screens/chabo_about_screen/page_links_widget.dart b/lib/screens/chabo_about_screen/page_links_widget.dart index 0400b63c..e8e6530c 100644 --- a/lib/screens/chabo_about_screen/page_links_widget.dart +++ b/lib/screens/chabo_about_screen/page_links_widget.dart @@ -110,6 +110,7 @@ class _PageLinksWidget extends StatelessWidget { ], ), ), + const _StoreRateWidget(), ], ); } diff --git a/lib/screens/forecast_screen.dart b/lib/screens/forecast_screen.dart index 2cbe19f4..40170290 100644 --- a/lib/screens/forecast_screen.dart +++ b/lib/screens/forecast_screen.dart @@ -4,6 +4,7 @@ import 'package:chabo_app/bloc/scroll_status/scroll_status_bloc.dart'; import 'package:chabo_app/bloc/status/status_bloc.dart'; import 'package:chabo_app/bloc/time_slots/time_slots_bloc.dart'; import 'package:chabo_app/cubits/floating_actions_cubit.dart'; +import 'package:chabo_app/cubits/time_format_cubit.dart'; import 'package:chabo_app/custom_properties.dart'; import 'package:chabo_app/custom_widget_state.dart'; import 'package:chabo_app/helpers/device_helper.dart'; @@ -34,7 +35,7 @@ class _ForecastScreenState extends CustomWidgetState { @override Widget build(BuildContext context) { return BlocBuilder( - builder: (context, state) { + builder: (context, floatingActionsState) { return Scaffold( floatingActionButton: const FloatingActionsWidget(), floatingActionButtonLocation: @@ -43,12 +44,12 @@ class _ForecastScreenState extends CustomWidgetState { body: SafeArea( top: false, child: BlocBuilder( - builder: (context, state) { - switch (state.status) { + builder: (context, forecastState) { + switch (forecastState.status) { case ForecastStatus.failure: - return ErrorScreen(errorMessage: state.message); + return ErrorScreen(errorMessage: forecastState.message); case ForecastStatus.success: - if (state.forecasts.isEmpty) { + if (forecastState.forecasts.isEmpty) { return const ErrorScreen(errorMessage: 'Empty return'); } @@ -115,6 +116,22 @@ class _ForecastScreenState extends CustomWidgetState { } }, ), + BlocListener( + listener: (context, state) { + /// If the TimeFormatState changes, re compute all notifications + BlocProvider.of(context).add( + ComputeNotificationEvent( + forecasts: BlocProvider.of( + context, + ).state.forecasts, + context: context, + timeSlotsState: + BlocProvider.of(context) + .state, + ), + ); + }, + ), ], child: NotificationListener( onNotification: (scrollNotification) { diff --git a/lib/widgets/bottom_sheets/settings_modal_bottom_sheet.dart b/lib/widgets/bottom_sheets/settings_modal_bottom_sheet.dart index 94f88829..b8b6ec13 100644 --- a/lib/widgets/bottom_sheets/settings_modal_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/settings_modal_bottom_sheet.dart @@ -2,6 +2,7 @@ import 'package:animated_toggle_switch/animated_toggle_switch.dart'; import 'package:chabo_app/bloc/theme/theme_bloc.dart'; import 'package:chabo_app/cubits/time_format_cubit.dart'; import 'package:chabo_app/custom_properties.dart'; +import 'package:chabo_app/helpers/device_helper.dart'; import 'package:chabo_app/models/enums/theme_state_status.dart'; import 'package:chabo_app/models/enums/time_format.dart'; import 'package:flutter/material.dart'; @@ -16,139 +17,149 @@ class SettingsModalBottomSheet extends StatelessWidget { final colorScheme = Theme.of(context).colorScheme; return Padding( - padding: const EdgeInsets.symmetric(vertical: 8.0), - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - BlocBuilder( - builder: (context, state) { - return Wrap( - direction: Axis.vertical, - crossAxisAlignment: WrapCrossAlignment.center, - runAlignment: WrapAlignment.center, - spacing: 15, - children: [ - Text( - AppLocalizations.of(context)!.themeSettingSubtitle, - style: const TextStyle( - fontWeight: FontWeight.bold, - ), + padding: const EdgeInsets.all(20.0), + child: Wrap( + direction: + DeviceHelper.isPortrait(context) || !DeviceHelper.isMobile(context) + ? Axis.horizontal + : Axis.vertical, + alignment: WrapAlignment.center, + runAlignment: WrapAlignment.center, + runSpacing: + DeviceHelper.isPortrait(context) || !DeviceHelper.isMobile(context) + ? 0 + : 35, + crossAxisAlignment: WrapCrossAlignment.center, + spacing: 15, + children: [ + BlocBuilder( + builder: (context, state) { + return Wrap( + direction: Axis.vertical, + crossAxisAlignment: WrapCrossAlignment.center, + runAlignment: WrapAlignment.center, + spacing: 15, + children: [ + Text( + AppLocalizations.of(context)!.themeSettingSubtitle, + style: const TextStyle( + fontWeight: FontWeight.bold, ), - AnimatedToggleSwitch.size( - current: state.status, - values: const [ - ThemeStateStatus.light, - ThemeStateStatus.dark, - ThemeStateStatus.system, - ], - style: ToggleStyle( - backgroundColor: colorScheme.surface, - indicatorColor: colorScheme.primary, - borderColor: colorScheme.inverseSurface, - ), - borderWidth: 1.5, - indicatorSize: const Size.fromWidth(65), - iconBuilder: (value) { - return Icon( - value.icon, - color: state.status == value - ? colorScheme.onPrimary - : colorScheme.onSurface, - ); - }, - onChanged: (value) => - BlocProvider.of(context).add( - ThemeChanged( - status: value, - ), - ), + ), + AnimatedToggleSwitch.size( + current: state.status, + values: const [ + ThemeStateStatus.light, + ThemeStateStatus.dark, + ThemeStateStatus.system, + ], + style: ToggleStyle( + backgroundColor: colorScheme.surface, + indicatorColor: colorScheme.primary, + borderColor: colorScheme.inverseSurface, ), - AnimatedSwitcher( - duration: const Duration( - milliseconds: CustomProperties.shortAnimationDurationMs, - ), - reverseDuration: const Duration( - milliseconds: CustomProperties.shortAnimationDurationMs, + borderWidth: 1.5, + indicatorSize: const Size.fromWidth(65), + iconBuilder: (value) { + return Icon( + value.icon, + color: state.status == value + ? colorScheme.onPrimary + : colorScheme.onSurface, + ); + }, + onChanged: (value) => + BlocProvider.of(context).add( + ThemeChanged( + status: value, ), - transitionBuilder: - (Widget child, Animation animation) { - return SlideTransition( - position: Tween( - begin: const Offset(0.0, 1.0), - end: const Offset(0.0, 0.0), - ).animate(animation), - child: FadeTransition( - opacity: CurvedAnimation( - parent: animation, - curve: Curves.easeIn, - ), - child: child, + ), + ), + AnimatedSwitcher( + duration: const Duration( + milliseconds: CustomProperties.shortAnimationDurationMs, + ), + reverseDuration: const Duration( + milliseconds: CustomProperties.shortAnimationDurationMs, + ), + transitionBuilder: + (Widget child, Animation animation) { + return SlideTransition( + position: Tween( + begin: const Offset(0.0, 1.0), + end: const Offset(0.0, 0.0), + ).animate(animation), + child: FadeTransition( + opacity: CurvedAnimation( + parent: animation, + curve: Curves.easeIn, ), - ); - }, - child: Text( - key: ValueKey( - state.status.text(context), + child: child, ), + ); + }, + child: Text( + key: ValueKey( state.status.text(context), ), + state.status.text(context), ), - ], - ); - }, - ), - const Padding( - padding: EdgeInsets.symmetric(horizontal: 15.0, vertical: 10), - child: Divider(), - ), - BlocBuilder( - builder: (context, state) { - return Wrap( - direction: Axis.vertical, - crossAxisAlignment: WrapCrossAlignment.center, - runAlignment: WrapAlignment.center, - spacing: 15, - children: [ - Text( - AppLocalizations.of(context)!.timeFormatSubTitle, - style: const TextStyle( - fontWeight: FontWeight.bold, - ), + ), + ], + ); + }, + ), + DeviceHelper.isPortrait(context) + ? const Padding( + padding: EdgeInsets.symmetric(horizontal: 15.0, vertical: 10), + child: Divider(), + ) + : const SizedBox.shrink(), + BlocBuilder( + builder: (context, state) { + return Wrap( + direction: Axis.vertical, + crossAxisAlignment: WrapCrossAlignment.center, + runAlignment: WrapAlignment.center, + spacing: 15, + children: [ + AnimatedToggleSwitch.size( + current: state.timeFormat, + values: const [ + TimeFormat.twelveHours, + TimeFormat.twentyFourHours, + ], + style: ToggleStyle( + backgroundColor: colorScheme.surface, + indicatorColor: colorScheme.primary, + borderColor: colorScheme.inverseSurface, ), - AnimatedToggleSwitch.size( - current: state.timeFormat, - values: const [ - TimeFormat.twelveHours, - TimeFormat.twentyFourHours, - ], - style: ToggleStyle( - backgroundColor: colorScheme.surface, - indicatorColor: colorScheme.primary, - borderColor: colorScheme.inverseSurface, - ), - borderWidth: 1.5, - indicatorSize: const Size.fromWidth(65), - iconBuilder: (value) { - return Text( - value.text, - style: TextStyle( - color: state.timeFormat == value - ? colorScheme.onPrimary - : colorScheme.onSurface, - fontWeight: FontWeight.bold), - ); - }, - onChanged: (value) => - context.read().setTimeFormat(), + borderWidth: 1.5, + indicatorSize: const Size.fromWidth(65), + iconBuilder: (value) { + return Text( + value.text, + style: TextStyle( + color: state.timeFormat == value + ? colorScheme.onPrimary + : colorScheme.onSurface, + fontWeight: FontWeight.bold), + ); + }, + onChanged: (value) => + context.read().setTimeFormat(), + ), + Text( + AppLocalizations.of(context)!.timeFormatSubTitle, + style: const TextStyle( + fontWeight: FontWeight.bold, ), - ], - ); - }, - ), - ], - ), + ), + ], + ); + }, + ), + ], ), ); } diff --git a/lib/widgets/floating_actions/floating_actions_widget.dart b/lib/widgets/floating_actions/floating_actions_widget.dart index d0e616cb..6e0e722e 100644 --- a/lib/widgets/floating_actions/floating_actions_widget.dart +++ b/lib/widgets/floating_actions/floating_actions_widget.dart @@ -211,10 +211,11 @@ class _FloatingActionsWidgetState extends State padding: DeviceHelper.isPortrait(context) ? const EdgeInsets.all(8) : const EdgeInsets.symmetric(vertical: 8), - child: Wrap( - spacing: 5, - textDirection: TextDirection.rtl, - alignment: WrapAlignment.end, + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: state.isRightHanded + ? CrossAxisAlignment.end + : CrossAxisAlignment.start, children: [ Row( mainAxisSize: DeviceHelper.isPortrait(context) diff --git a/pubspec.lock b/pubspec.lock index 9a214bb6..7fced6a3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -369,10 +369,10 @@ packages: dependency: "direct main" description: name: google_fonts - sha256: e20ff62b158b96f392bfc8afe29dee1503c94fbea2cbe8186fd59b756b8ae982 + sha256: "0833bfcc1c32560ee51d381fcf1d6d6b35921e89afe852c12f83dc8c00b2e6bc" url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "6.0.0" google_mobile_ads: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index ed71be79..39871635 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: Mobile app to get the closing and opening schedules of the Chaban D publish_to: 'none' -version: 2.4.0 +version: 2.4.2 environment: sdk: '>=3.0.0 <4.0.0' @@ -23,7 +23,7 @@ dependencies: flutter_local_notifications: ^15.0.0 flutter_markdown: ^0.6.14 font_awesome_flutter: ^10.1.0 - google_fonts: ^5.0.0 + google_fonts: ^6.0.0 google_mobile_ads: ^3.0.0 http: ^1.0.0 intl: ^0.18.0 diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake new file mode 100644 index 00000000..56be4c9a --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,25 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + sentry_flutter + url_launcher_windows +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin)