From 1ac8e30836c5e66cfa674d9ed1d63cfbd02b9e76 Mon Sep 17 00:00:00 2001 From: mixin27 Date: Fri, 16 Aug 2024 21:56:55 +0630 Subject: [PATCH 1/4] add build and release workflow --- .github/workflows/release.yaml | 110 +++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..f29b8d9 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,110 @@ +name: Android build and release + +on: + push: + branches: develop + + workflow_dispatch: + +jobs: + version: + name: Create version number + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install GitVersion + uses: gittools/actions/gitversion/setup@v0.9.7 + with: + versionSpec: "5.x" + - name: Use GitVersion + id: gitversion + uses: gittools/actions/gitversion/execute@v0.9.7 + - name: Create version.txt with nuGetVersion + run: echo ${{ steps.gitversion.outputs.nuGetVersion }} > version.txt + - name: Upload version.txt + uses: actions/upload-artifact@v2 + with: + name: gitversion + path: version.txt + + build: + name: Create Android Release + needs: version + runs-on: ubuntu-latest + steps: + - name: 📚 Git Checkout + uses: actions/checkout@v1 + + - name: Git version.txt + uses: actions/download-artifact@v2 + with: + name: gitversion + + - name: Create new file without newline char from version.txt + run: tr -d '\n' < version.txt > version1.txt + + - name: Read version + id: version + uses: juliangruber/read-file-action@v1 + with: + path: version1.txt + + - name: Update version in YAML + run: sed -i 's/99.99.99+99/${{ steps.version.outputs.content }}+${{ github.run_number }}/g' pubspec.yaml + + - name: Download Android keystore + id: android_keystore + uses: timheuer/base64-to-file@v1.0.3 + with: + fileName: upload-keystore.jks + encodedString: ${{ secrets.KEYSTORE_BASE64 }} + + - name: Create key.properties + run: | + echo "storeFile=${{ steps.android_keystore.outputs.filePath }}" > android/key.properties + echo "storePassword=${{ secrets.STORE_PASSWORD }}" >> android/key.properties + echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties + echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties + + - name: Download Android keystore + id: google_play_service + uses: timheuer/base64-to-file@v1.0.3 + with: + fileName: app/google-services.json + encodedString: ${{ secrets.GOOGLE_SERVICE_BASE64 }} + + - uses: actions/setup-java@v3 + with: + distribution: "zulu" + java-version: "12.x" + cache: gradle + + - name: 🐦 Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: "stable" + cache: true + cache-key: flutter-:os:-:channel:-:version:-:arch:-:hash:-${{ hashFiles('**/pubspec.lock') }} + + - name: 📦 Install Dependencies + run: | + flutter packages get + + - name: ✨ Check Formatting + run: dart format --line-length 80 --set-exit-if-changed lib test + + - name: 🏗️ Generate build_runner + run: dart run build_runner build -d + + - name: 🌐 Generate Locale Keys + run: dart run easy_localization:generate -S assets/translations -O lib/src/l10n -o locale_keys.g.dart -f keys + + - name: Start Android Release Build + run: apk --split-per-abi --target lib/main.dart --dart-define-from-file=.env + + - name: Upload Android Release + uses: actions/upload-artifact@v2 + with: + name: android-release + path: build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk + # path: build/app/outputs/bundle/release/app-release.aab From 35190ebe27fbc71220a111419f6a315e45029315 Mon Sep 17 00:00:00 2001 From: mixin27 Date: Fri, 16 Aug 2024 22:01:05 +0630 Subject: [PATCH 2/4] upgrade gitversion workflow --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f29b8d9..9a7da46 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -13,12 +13,12 @@ jobs: steps: - uses: actions/checkout@v3 - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v0.9.7 + uses: gittools/actions/gitversion/setup@v1 with: versionSpec: "5.x" - name: Use GitVersion id: gitversion - uses: gittools/actions/gitversion/execute@v0.9.7 + uses: gittools/actions/gitversion/execute@v1 - name: Create version.txt with nuGetVersion run: echo ${{ steps.gitversion.outputs.nuGetVersion }} > version.txt - name: Upload version.txt From cafe17d1bc2cf231d476034aab407884a2b2eecd Mon Sep 17 00:00:00 2001 From: mixin27 Date: Fri, 16 Aug 2024 22:02:38 +0630 Subject: [PATCH 3/4] upgrade gitversion workflow --- .github/workflows/release.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 9a7da46..27c4923 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -14,8 +14,6 @@ jobs: - uses: actions/checkout@v3 - name: Install GitVersion uses: gittools/actions/gitversion/setup@v1 - with: - versionSpec: "5.x" - name: Use GitVersion id: gitversion uses: gittools/actions/gitversion/execute@v1 From dadf656deb5c240f5abfe9869e97e88c78d0979b Mon Sep 17 00:00:00 2001 From: mixin27 Date: Mon, 16 Sep 2024 19:34:21 +0630 Subject: [PATCH 4/4] fixed notification --- lib/app_start_up.dart | 4 +- lib/main.dart | 1 - .../app_settings/app_settings_page.dart | 2 +- lib/src/utils/onesignal/onesignal.dart | 50 ++++----- .../settings/notification_switch_tile.dart | 12 +- pubspec.lock | 106 ++++++++++-------- pubspec.yaml | 21 ++-- 7 files changed, 100 insertions(+), 96 deletions(-) diff --git a/lib/app_start_up.dart b/lib/app_start_up.dart index de7633a..e66c68f 100644 --- a/lib/app_start_up.dart +++ b/lib/app_start_up.dart @@ -4,7 +4,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:mmcalendar/firebase_options.dart'; import 'package:mmcalendar/src/shared/providers/mm_calendar_providers.dart'; import 'package:mmcalendar/src/utils/shared_prefs/preference_manager.dart'; -// import 'package:mmcalendar/src/utils/onesignal/onesignal.dart'; +import 'package:mmcalendar/src/utils/onesignal/onesignal.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'app_start_up.g.dart'; @@ -25,7 +25,7 @@ FutureOr appStartup(AppStartupRef ref) async { Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ), - // initOnesignal(), + initOnesignal(), // list of providers to be warmed up // ref.watch(onboardingRepositoryProvider.future), diff --git a/lib/main.dart b/lib/main.dart index a7f4781..77ea5da 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,7 +8,6 @@ import 'package:mmcalendar/src/features/app/app.dart'; import 'package:mmcalendar/src/l10n/l10n.dart'; import 'package:mmcalendar/src/shared/errors/async_error_logger.dart'; import 'package:mmcalendar/src/shared/errors/error_logger.dart'; -// import 'package:mmcalendar/src/utils/onesignal/onesignal.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); diff --git a/lib/src/features/settings/presentation/app_settings/app_settings_page.dart b/lib/src/features/settings/presentation/app_settings/app_settings_page.dart index e5c8c4e..e4fb37c 100644 --- a/lib/src/features/settings/presentation/app_settings/app_settings_page.dart +++ b/lib/src/features/settings/presentation/app_settings/app_settings_page.dart @@ -20,7 +20,7 @@ class AppSettingsPage extends StatelessWidget { ), body: ListView( children: [ - // const NotificationSwitchListTile(), + const NotificationSwitchListTile(), const ThemeModeSwitchTile(), const CalendarLanguageListTile(), const AppLanguageListTile(), diff --git a/lib/src/utils/onesignal/onesignal.dart b/lib/src/utils/onesignal/onesignal.dart index 7f025ce..285a3db 100644 --- a/lib/src/utils/onesignal/onesignal.dart +++ b/lib/src/utils/onesignal/onesignal.dart @@ -1,33 +1,33 @@ -// import 'package:mmcalendar/src/utils/native_id.dart'; -// import 'package:onesignal_flutter/onesignal_flutter.dart'; +import 'package:mmcalendar/src/utils/native_id.dart'; +import 'package:onesignal_flutter/onesignal_flutter.dart'; -// const String onesignalAppId = String.fromEnvironment('ONESIGNAL_APP_ID'); +const String onesignalAppId = String.fromEnvironment('ONESIGNAL_APP_ID'); -// Future initOnesignal() async { -// if (onesignalAppId.isEmpty) { -// throw AssertionError('ONESIGNAL_APP_ID is not set'); -// } +Future initOnesignal() async { + if (onesignalAppId.isEmpty) { + throw AssertionError('ONESIGNAL_APP_ID is not set'); + } -// OneSignal.Debug.setLogLevel(OSLogLevel.verbose); + OneSignal.Debug.setLogLevel(OSLogLevel.verbose); -// OneSignal.initialize(onesignalAppId); + OneSignal.initialize(onesignalAppId); -// OneSignal.Notifications.requestPermission(true); + OneSignal.Notifications.requestPermission(true); -// final deviceId = await getNativeDeviceId(); -// if (deviceId != null) { -// await OneSignal.login(deviceId); -// } -// } + final deviceId = await getNativeDeviceId(); + if (deviceId != null) { + await OneSignal.login(deviceId); + } +} -// Future disablePush([bool disable = true]) async { -// if (disable) { -// OneSignal.User.pushSubscription.optOut(); -// } else { -// OneSignal.User.pushSubscription.optIn(); -// } -// } +Future disablePush([bool disable = true]) async { + if (disable) { + OneSignal.User.pushSubscription.optOut(); + } else { + OneSignal.User.pushSubscription.optIn(); + } +} -// bool? getPushSubsciption() { -// return OneSignal.User.pushSubscription.optedIn; -// } +bool? getPushSubsciption() { + return OneSignal.User.pushSubscription.optedIn; +} diff --git a/lib/src/widgets/settings/notification_switch_tile.dart b/lib/src/widgets/settings/notification_switch_tile.dart index 5d1721e..7639341 100644 --- a/lib/src/widgets/settings/notification_switch_tile.dart +++ b/lib/src/widgets/settings/notification_switch_tile.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:iconly/iconly.dart'; -// import 'package:mmcalendar/src/utils/onesignal/onesignal.dart'; +import 'package:mmcalendar/src/utils/onesignal/onesignal.dart'; class NotificationSwitchListTile extends StatefulWidget { const NotificationSwitchListTile({ @@ -18,10 +18,10 @@ class _NotificationSwitchListTileState @override void initState() { - // final flag = getPushSubsciption(); - // setState(() { - // _enabled = flag ?? false; - // }); + final flag = getPushSubsciption(); + setState(() { + _enabled = flag ?? false; + }); super.initState(); } @@ -33,7 +33,7 @@ class _NotificationSwitchListTileState setState(() { _enabled = newValue; }); - // await disablePush(!newValue); + await disablePush(!newValue); }, secondary: const Icon(IconlyLight.notification), title: const Text('Notification'), diff --git a/pubspec.lock b/pubspec.lock index 3ffa1ef..ce0f24a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: b1595874fbc8f7a50da90f5d8f327bb0bfd6a95dc906c390efe991540c3b54aa + sha256: ddc6f775260b89176d329dee26f88b9469ef46aa3228ff6a0b91caf2b2989692 url: "https://pub.dev" source: hosted - version: "1.3.40" + version: "1.3.42" _macros: dependency: transitive description: dart @@ -58,10 +58,10 @@ packages: dependency: "direct main" description: name: auto_route - sha256: bb673104dbdc22667d01ec668df3d2a358b6e3da481428eeb1151933cfc1a7d6 + sha256: b83e8ce46da7228cdd019b5a11205454847f0a971bca59a7529b98df9876889b url: "https://pub.dev" source: hosted - version: "9.2.0" + version: "9.2.2" auto_route_generator: dependency: "direct dev" description: @@ -226,18 +226,18 @@ packages: dependency: "direct dev" description: name: custom_lint - sha256: "4939d89e580c36215e48a7de8fd92f22c79dcc3eb11fda84f3402b3b45aec663" + sha256: "6e1ec47427ca968f22bce734d00028ae7084361999b41673291138945c5baca0" url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.7" custom_lint_builder: dependency: transitive description: name: custom_lint_builder - sha256: d9e5bb63ed52c1d006f5a1828992ba6de124c27a531e8fba0a31afffa81621b3 + sha256: ba2f90fff4eff71d202d097eb14b14f87087eaaef742e956208c0eb9d3a40a21 url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.7" custom_lint_core: dependency: transitive description: @@ -250,10 +250,10 @@ packages: dependency: transitive description: name: dart_style - sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab" url: "https://pub.dev" source: hosted - version: "2.3.6" + version: "2.3.7" easy_localization: dependency: "direct main" description: @@ -298,114 +298,114 @@ packages: dependency: "direct main" description: name: firebase_analytics - sha256: "064e5b57b0693305946b7caa6a80ed80a918f46804c247b6cd7ed9cd327df48f" + sha256: "7b5ae39d853ead76f9d030dc23389bfec4ea826d7cccb4eea4873dcb0cdd172b" url: "https://pub.dev" source: hosted - version: "11.2.1" + version: "11.3.1" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: d094547c9022c404b5ca39b7209607fc80e75e39d38875f050508fa4346b3e74 + sha256: "0205e05bb37abd29d5dec5cd89aeb04f3f58bf849aad21dd938be0507d52a40c" url: "https://pub.dev" source: hosted - version: "4.2.1" + version: "4.2.3" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: "06dc023b0144c0df630a56b6262cc9e7d6069fe78148853d97614dbefb6ea923" + sha256: "434807f8b30526e21cc062410c28ee5c6680a13626c4443b5ffede29f84b0c74" url: "https://pub.dev" source: hosted - version: "0.5.9+1" + version: "0.5.10" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "3187f4f8e49968573fd7403011dca67ba95aae419bc0d8131500fae160d94f92" + sha256: "40921de9795fbf5887ed5c0adfdf4972d5a8d7ae7e1b2bb98dea39bc02626a88" url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.4.1" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: "3c3a1e92d6f4916c32deea79c4a7587aa0e9dbbe5889c7a16afcf005a485ee02" + sha256: f7d7180c7f99babd4b4c517754d41a09a4943a0f7a69b65c894ca5c68ba66315 url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "5.2.1" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: e8d1e22de72cb21cdcfc5eed7acddab3e99cd83f3b317f54f7a96c32f25fd11e + sha256: f4ee170441ca141c5f9ee5ad8737daba3ee9c8e7efb6902aee90b4fbd178ce25 url: "https://pub.dev" source: hosted - version: "2.17.4" + version: "2.18.0" firebase_crashlytics: dependency: "direct main" description: name: firebase_crashlytics - sha256: "30260e1b8ad1464b41ca4531b44ce63d752daaf2f12c92ca6cdcd82b270abecc" + sha256: c4fdbb14ba6f36794f89dc27fb5c759c9cc67ecbaeb079edc4dba515bbf9f555 url: "https://pub.dev" source: hosted - version: "4.0.4" + version: "4.1.1" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: a75e1826d92ea4e86e4a753c7b5d64b844a362676fa653185f1581c859186d18 + sha256: "891d6f7ba4b93672d0e1265f27b6a9dccd56ba2cc30ce6496586b32d1d8770ac" url: "https://pub.dev" source: hosted - version: "3.6.40" + version: "3.6.42" firebase_performance: dependency: "direct main" description: name: firebase_performance - sha256: "6d17133458b9627f15f278d6f71bebbbce885d393f3462b690e55deeb5c36b90" + sha256: "879ce4d83242cb7d1ec67a8b45daa351f230211778e34eeea979894839c4832a" url: "https://pub.dev" source: hosted - version: "0.10.0+4" + version: "0.10.0+6" firebase_performance_platform_interface: dependency: transitive description: name: firebase_performance_platform_interface - sha256: "28dc0a70a3459fe51d1c1be5754803a9a0db0e210322ec7526f6ce42bf6ad83e" + sha256: ac68eba644f593903a931ba7f26f0677b725d5a60f8f7bc0fed01d88a11d1463 url: "https://pub.dev" source: hosted - version: "0.1.4+40" + version: "0.1.4+42" firebase_performance_web: dependency: transitive description: name: firebase_performance_web - sha256: db91d86b34280f5253d2913945fdd51d7114486584a298a7bedf1c4b2ab08f79 + sha256: ff53b9c5d8601fc983d0173b88fdfd8abcc74948f0a3753f3c1ec276b680f23c url: "https://pub.dev" source: hosted - version: "0.1.6+12" + version: "0.1.7" firebase_remote_config: dependency: "direct main" description: name: firebase_remote_config - sha256: "62e86ed64370c382a2f872fbcabcae591c404776eb84685eb535bab53c0c00d5" + sha256: d17f91fc2e845353de8c5400266911571d3bbf573f164533cc7906d17bf20ad3 url: "https://pub.dev" source: hosted - version: "5.0.4" + version: "5.1.1" firebase_remote_config_platform_interface: dependency: transitive description: name: firebase_remote_config_platform_interface - sha256: "80973fa763b7c9a0fc0596afed7063f2378de2cf2d37b017254e613160b43135" + sha256: "92ea98b2d928d70f2ba27f2d635bd354ad608641d9a9f3719e2454560fa82b10" url: "https://pub.dev" source: hosted - version: "1.4.40" + version: "1.4.42" firebase_remote_config_web: dependency: transitive description: name: firebase_remote_config_web - sha256: "14ba362bdcf7abda12fa9060f2ebae7d342153e4d619007071e98cd557ce29a3" + sha256: "706b9a52a7f05bd2f24e49b05297cba90499e5db1a2b42a5c92bfdcc43c1d238" url: "https://pub.dev" source: hosted - version: "1.6.12" + version: "1.7.0" fixnum: dependency: transitive description: @@ -662,10 +662,10 @@ packages: dependency: transitive description: name: mime - sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" native_id: dependency: "direct main" description: @@ -674,6 +674,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.5" + onesignal_flutter: + dependency: "direct main" + description: + name: onesignal_flutter + sha256: "55c1324a8ac9195cfe89abce66e2de69e6138fc3688ca6e57aacdfbd7a6d49cc" + url: "https://pub.dev" + source: hosted + version: "5.2.5" package_config: dependency: transitive description: @@ -822,10 +830,10 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: a7e8467e9181cef109f601e3f65765685786c1a738a83d7fbbde377589c0d974 + sha256: "480ba4345773f56acda9abf5f50bd966f581dac5d514e5fc4a18c62976bbba7e" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_foundation: dependency: transitive description: @@ -1011,10 +1019,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: f0c73347dfcfa5b3db8bc06e1502668265d39c08f310c29bff4e28eea9699f79 + sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab url: "https://pub.dev" source: hosted - version: "6.3.9" + version: "6.3.10" url_launcher_ios: dependency: transitive description: @@ -1067,10 +1075,10 @@ packages: dependency: transitive description: name: uuid - sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90" + sha256: f33d6bb662f0e4f79dcd7ada2e6170f3b3a2530c28fc41f49a411ddedd576a77 url: "https://pub.dev" source: hosted - version: "4.4.2" + version: "4.5.0" vector_math: dependency: transitive description: @@ -1099,10 +1107,10 @@ packages: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: d43c1d6b787bf0afad444700ae7f4db8827f701bc61c255ac8d328c6f4d52062 url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "1.0.0" web_socket: dependency: transitive description: @@ -1145,4 +1153,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.5.0 <4.0.0" - flutter: ">=3.22.0" + flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml index 18432b3..93f72c7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: mmcalendar description: "Simple myanmar calendar." publish_to: "none" -version: 1.0.2+102 +version: 1.0.3+103 environment: sdk: ^3.5.0 @@ -10,7 +10,7 @@ dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.8 - auto_route: ^9.2.0 + auto_route: ^9.2.2 intl: ^0.19.0 flutter_mmcalendar: ^1.1.2 table_calendar: ^3.1.2 @@ -19,11 +19,11 @@ dependencies: flutter_hooks: ^0.20.5 riverpod_annotation: ^2.3.5 - firebase_core: ^3.3.0 - firebase_analytics: ^11.2.1 - firebase_crashlytics: ^4.0.4 - firebase_remote_config: ^5.0.4 - firebase_performance: ^0.10.0+4 + firebase_core: ^3.4.1 + firebase_analytics: ^11.3.1 + firebase_crashlytics: ^4.1.1 + firebase_remote_config: ^5.1.1 + firebase_performance: ^0.10.0+6 easy_localization: ^3.0.7 iconly: ^1.0.1 @@ -31,17 +31,14 @@ dependencies: flutter_markdown: ^0.7.3+1 native_id: ^0.0.5 shared_preferences: ^2.3.1 - - # Currently having an issue with onesignal after flutter version upgrade to 3.24.0 - # https://github.com/OneSignal/OneSignal-Flutter-SDK/issues/930 - # onesignal_flutter: ^5.2.2 + onesignal_flutter: ^5.2.5 dev_dependencies: flutter_test: sdk: flutter build_runner: ^2.4.12 flutter_lints: ^4.0.0 - custom_lint: + custom_lint: ^0.6.7 auto_route_generator: ^9.0.0 riverpod_generator: ^2.4.2 riverpod_lint: ^2.3.12