diff --git a/analysis_options.yaml b/analysis_options.yaml index 55dfdd0..f8391d6 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,6 +1,4 @@ analyzer: - plugins: - - custom_lint exclude: - "**/*.g.dart" - "**/*.freezed.dart" diff --git a/lib/src/app/router/app_router.dart b/lib/src/app/router/app_router.dart index 0f947b7..89fa0ee 100644 --- a/lib/src/app/router/app_router.dart +++ b/lib/src/app/router/app_router.dart @@ -1,4 +1,3 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/lib/src/core/providers/database_provider.dart b/lib/src/core/providers/database_provider.dart index 1a97ca7..122a423 100644 --- a/lib/src/core/providers/database_provider.dart +++ b/lib/src/core/providers/database_provider.dart @@ -5,7 +5,7 @@ part 'database_provider.g.dart'; /// Singleton базы данных. keepAlive=true — живёт всё время работы приложения. @Riverpod(keepAlive: true) -AppDatabase appDatabase(AppDatabaseRef ref) { +AppDatabase appDatabase(Ref ref) { final db = AppDatabase(); ref.onDispose(db.close); return db; diff --git a/lib/src/features/accounts/application/account_providers.dart b/lib/src/features/accounts/application/account_providers.dart index 27d22e9..8e7a26b 100644 --- a/lib/src/features/accounts/application/account_providers.dart +++ b/lib/src/features/accounts/application/account_providers.dart @@ -6,7 +6,7 @@ import '../domain/repositories/account_repository.dart'; part 'account_providers.g.dart'; @Riverpod(keepAlive: true) -AccountRepository accountRepository(AccountRepositoryRef ref) { +AccountRepository accountRepository(Ref ref) { final db = ref.watch(appDatabaseProvider); return AccountRepositoryImpl(db.accountsDao); } diff --git a/lib/src/features/accounts/application/accounts_controller.dart b/lib/src/features/accounts/application/accounts_controller.dart index b194a68..5be6d89 100644 --- a/lib/src/features/accounts/application/accounts_controller.dart +++ b/lib/src/features/accounts/application/accounts_controller.dart @@ -7,12 +7,12 @@ part 'accounts_controller.g.dart'; /// Реактивный список счетов для активного пользователя. @riverpod -Stream> accountsStream(AccountsStreamRef ref, int userId) => +Stream> accountsStream(Ref ref, int userId) => ref.watch(accountRepositoryProvider).watchByUser(userId); /// Текущий баланс счёта. @riverpod -Stream accountBalance(AccountBalanceRef ref, int accountId) => +Stream accountBalance(Ref ref, int accountId) => ref.watch(accountRepositoryProvider).watchBalance(accountId); /// Контроллер CRUD-операций над счетами. diff --git a/lib/src/features/categories/application/categories_controller.dart b/lib/src/features/categories/application/categories_controller.dart index c07a3a7..cb52abd 100644 --- a/lib/src/features/categories/application/categories_controller.dart +++ b/lib/src/features/categories/application/categories_controller.dart @@ -7,13 +7,13 @@ part 'categories_controller.g.dart'; /// Реактивный список категорий для активного пользователя. @riverpod -Stream> categoriesStream(CategoriesStreamRef ref, int userId) => +Stream> categoriesStream(Ref ref, int userId) => ref.watch(categoryRepositoryProvider).watchByUser(userId); /// Реактивный список категорий, фильтрованный по типу (income / expense). @riverpod Stream> categoriesByTypeStream( - CategoriesByTypeStreamRef ref, + Ref ref, int userId, CategoryType type, ) => diff --git a/lib/src/features/categories/application/category_providers.dart b/lib/src/features/categories/application/category_providers.dart index 8d4c40f..48ae484 100644 --- a/lib/src/features/categories/application/category_providers.dart +++ b/lib/src/features/categories/application/category_providers.dart @@ -7,7 +7,7 @@ part 'category_providers.g.dart'; /// DI-провайдер репозитория категорий. @Riverpod(keepAlive: true) -CategoryRepository categoryRepository(CategoryRepositoryRef ref) { +CategoryRepository categoryRepository(Ref ref) { final db = ref.watch(appDatabaseProvider); return CategoryRepositoryImpl(db.categoriesDao); } diff --git a/lib/src/features/home/presentation/state/selected_category_filter.dart b/lib/src/features/home/presentation/state/selected_category_filter.dart index efefa3c..b34c480 100644 --- a/lib/src/features/home/presentation/state/selected_category_filter.dart +++ b/lib/src/features/home/presentation/state/selected_category_filter.dart @@ -1,8 +1,22 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'selected_category_filter.g.dart'; /// id выбранной категории для фильтра списка транзакций. /// `null` — фильтр снят, отображаются все категории. -final selectedCategoryFilterProvider = StateProvider((ref) => null); +@riverpod +class SelectedCategoryFilter extends _$SelectedCategoryFilter { + @override + int? build() => null; + + void select(int? id) => state = id; +} /// id выбранного счёта в табах. `kAllAccountsId` (0) — «Все счета». -final selectedAccountProvider = StateProvider((ref) => 0); +@riverpod +class SelectedAccount extends _$SelectedAccount { + @override + int build() => 0; + + void select(int id) => state = id; +} diff --git a/lib/src/features/home/presentation/widgets/account_tabs.dart b/lib/src/features/home/presentation/widgets/account_tabs.dart index 733251e..c8b7cf0 100644 --- a/lib/src/features/home/presentation/widgets/account_tabs.dart +++ b/lib/src/features/home/presentation/widgets/account_tabs.dart @@ -25,8 +25,8 @@ class AccountTabs extends ConsumerWidget { icon: Icons.account_balance_wallet_outlined, label: context.l10n.allAccounts, active: selected == kAllAccountsId, - onTap: () => ref.read(selectedAccountProvider.notifier).state = - kAllAccountsId, + onTap: () => + ref.read(selectedAccountProvider.notifier).select(kAllAccountsId), ), for (final a in accounts) ...[ const SizedBox(width: 8), @@ -34,7 +34,7 @@ class AccountTabs extends ConsumerWidget { account: a, active: selected == a.id, onTap: () => - ref.read(selectedAccountProvider.notifier).state = a.id, + ref.read(selectedAccountProvider.notifier).select(a.id), ), ], ], diff --git a/lib/src/features/home/presentation/widgets/category_donut_card.dart b/lib/src/features/home/presentation/widgets/category_donut_card.dart index c87dfbe..9e8dae3 100644 --- a/lib/src/features/home/presentation/widgets/category_donut_card.dart +++ b/lib/src/features/home/presentation/widgets/category_donut_card.dart @@ -47,9 +47,9 @@ class CategoryDonutCard extends ConsumerWidget { thickness: 22, activeId: selectedCat, onSegmentTap: (id) { - final notifier = - ref.read(selectedCategoryFilterProvider.notifier); - notifier.state = id == notifier.state ? null : id; + ref + .read(selectedCategoryFilterProvider.notifier) + .select(id == selectedCat ? null : id); }, centerChild: Column( mainAxisSize: MainAxisSize.min, diff --git a/lib/src/features/home/presentation/widgets/transactions_section.dart b/lib/src/features/home/presentation/widgets/transactions_section.dart index d936d7c..edf9dc9 100644 --- a/lib/src/features/home/presentation/widgets/transactions_section.dart +++ b/lib/src/features/home/presentation/widgets/transactions_section.dart @@ -57,7 +57,7 @@ class CategoryFilterPill extends ConsumerWidget { padding: const EdgeInsets.symmetric(horizontal: 16), child: GestureDetector( onTap: () => - ref.read(selectedCategoryFilterProvider.notifier).state = null, + ref.read(selectedCategoryFilterProvider.notifier).select(null), behavior: HitTestBehavior.opaque, child: Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 10), diff --git a/lib/src/features/settings/application/settings_providers.dart b/lib/src/features/settings/application/settings_providers.dart index 788ff9a..9539953 100644 --- a/lib/src/features/settings/application/settings_providers.dart +++ b/lib/src/features/settings/application/settings_providers.dart @@ -8,12 +8,12 @@ part 'settings_providers.g.dart'; /// DI-провайдер репозитория настроек. @Riverpod(keepAlive: true) -SettingsRepository settingsRepository(SettingsRepositoryRef ref) { +SettingsRepository settingsRepository(Ref ref) { final db = ref.watch(appDatabaseProvider); return SettingsRepositoryImpl(db.settingsDao); } /// Реактивный поток настроек для конкретного пользователя. @riverpod -Stream settingsStream(SettingsStreamRef ref, int userId) => +Stream settingsStream(Ref ref, int userId) => ref.watch(settingsRepositoryProvider).watchSettings(userId); diff --git a/lib/src/features/transactions/application/transaction_providers.dart b/lib/src/features/transactions/application/transaction_providers.dart index fa3a804..b671930 100644 --- a/lib/src/features/transactions/application/transaction_providers.dart +++ b/lib/src/features/transactions/application/transaction_providers.dart @@ -9,7 +9,7 @@ part 'transaction_providers.g.dart'; /// /// keepAlive: репозиторий держит открытые Drift-стримы — не должен пересоздаваться. @Riverpod(keepAlive: true) -TransactionRepository transactionRepository(TransactionRepositoryRef ref) { +TransactionRepository transactionRepository(Ref ref) { final db = ref.watch(appDatabaseProvider); return TransactionRepositoryImpl(db.transactionsDao); } diff --git a/lib/src/features/transactions/application/transactions_controller.dart b/lib/src/features/transactions/application/transactions_controller.dart index aefa28f..58035c3 100644 --- a/lib/src/features/transactions/application/transactions_controller.dart +++ b/lib/src/features/transactions/application/transactions_controller.dart @@ -22,7 +22,7 @@ part 'transactions_controller.g.dart'; /// ``` @riverpod Stream> transactionsStream( - TransactionsStreamRef ref, + Ref ref, int userId, { int? accountId, int? categoryId, diff --git a/lib/src/features/user/application/user_providers.dart b/lib/src/features/user/application/user_providers.dart index 3dc2e12..41093ac 100644 --- a/lib/src/features/user/application/user_providers.dart +++ b/lib/src/features/user/application/user_providers.dart @@ -7,7 +7,7 @@ part 'user_providers.g.dart'; /// DI-провайдер репозитория пользователей. @Riverpod(keepAlive: true) -UserRepository userRepository(UserRepositoryRef ref) { +UserRepository userRepository(Ref ref) { final db = ref.watch(appDatabaseProvider); return UserRepositoryImpl(db.usersDao); } diff --git a/lib/src/features/user/application/users_controller.dart b/lib/src/features/user/application/users_controller.dart index 0ecaa29..9f89e39 100644 --- a/lib/src/features/user/application/users_controller.dart +++ b/lib/src/features/user/application/users_controller.dart @@ -6,7 +6,7 @@ part 'users_controller.g.dart'; /// Реактивный список всех пользователей. @riverpod -Stream> usersStream(UsersStreamRef ref) => +Stream> usersStream(Ref ref) => ref.watch(userRepositoryProvider).watchAll(); /// Контроллер операций над профилями. diff --git a/pubspec.lock b/pubspec.lock index 00fa1a0..29a2076 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,26 +5,26 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f + sha256: a49d6cf99e8d8e7a8e93668d09ced0bbdb954d0b4fccc2f5f9241c6b87fad95c url: "https://pub.dev" source: hosted - version: "85.0.0" + version: "99.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: f4ad0fea5f102201015c9aae9d93bc02f75dd9491529a8c21f88d17a8523d44c + sha256: "663efa951fb8a45e06f491223a604c93820598f20e6a99c25617a1576065e8b7" url: "https://pub.dev" source: hosted - version: "7.6.0" - analyzer_plugin: + version: "12.1.0" + analyzer_buffer: dependency: transitive description: - name: analyzer_plugin - sha256: a5ab7590c27b779f3d4de67f31c4109dbe13dd7339f86461a6f2a8ab2594d8ce + name: analyzer_buffer + sha256: bf559bc54530827a92cc4d9ee340fc76b4f17f386218c2b9e7cd33ed468a7e4d url: "https://pub.dev" source: hosted - version: "0.13.4" + version: "0.3.2" args: dependency: transitive description: @@ -53,18 +53,18 @@ packages: dependency: transitive description: name: build - sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7" + sha256: a156715e7cd728130c592f30552575908aae5b100005fbc1f0fb16b3c03a3d10 url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "4.0.6" build_config: dependency: transitive description: name: build_config - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + sha256: "4070d2a59f8eec34c97c86ceb44403834899075f66e8a9d59706f8e7834f6f71" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.3.0" build_daemon: dependency: transitive description: @@ -73,30 +73,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.1" - build_resolvers: - dependency: transitive - description: - name: build_resolvers - sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62 - url: "https://pub.dev" - source: hosted - version: "2.5.4" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53" + sha256: "1523ce62448ebac2c15a8ba5fbad8acac169788658a7dd2a1c2d9c2a9318b9a6" url: "https://pub.dev" source: hosted - version: "2.5.4" - build_runner_core: - dependency: transitive - description: - name: build_runner_core - sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792" - url: "https://pub.dev" - source: hosted - version: "9.1.2" + version: "2.15.0" built_collection: dependency: transitive description: @@ -137,14 +121,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.4" - ci: + cli_config: dependency: transitive description: - name: ci - sha256: "145d095ce05cddac4d797a158bc4cf3b6016d1fe63d8c3d2fbd7212590adca13" + name: cli_config + sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec url: "https://pub.dev" source: hosted - version: "0.1.0" + version: "0.2.0" cli_util: dependency: transitive description: @@ -193,6 +177,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + coverage: + dependency: transitive + description: + name: coverage + sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d" + url: "https://pub.dev" + source: hosted + version: "1.15.0" crypto: dependency: transitive description: @@ -209,70 +201,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.9" - custom_lint: - dependency: "direct dev" - description: - name: custom_lint - sha256: "9656925637516c5cf0f5da018b33df94025af2088fe09c8ae2ca54c53f2d9a84" - url: "https://pub.dev" - source: hosted - version: "0.7.6" - custom_lint_builder: - dependency: transitive - description: - name: custom_lint_builder - sha256: "6cdc8e87e51baaaba9c43e283ed8d28e59a0c4732279df62f66f7b5984655414" - url: "https://pub.dev" - source: hosted - version: "0.7.6" - custom_lint_core: - dependency: transitive - description: - name: custom_lint_core - sha256: "31110af3dde9d29fb10828ca33f1dce24d2798477b167675543ce3d208dee8be" - url: "https://pub.dev" - source: hosted - version: "0.7.5" - custom_lint_visitor: - dependency: transitive - description: - name: custom_lint_visitor - sha256: "4a86a0d8415a91fbb8298d6ef03e9034dc8e323a599ddc4120a0e36c433983a2" - url: "https://pub.dev" - source: hosted - version: "1.0.0+7.7.0" dart_style: dependency: transitive description: name: dart_style - sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" + sha256: a4c1ccfee44c7e75ed80484071a5c142a385345e658fd8bd7c4b5c97e7198f98 url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.8" drift: dependency: "direct main" description: name: drift - sha256: "540cf382a3bfa99b76e51514db5b0ebcd81ce3679b7c1c9cb9478ff3735e47a1" + sha256: "8033500116b24398fba0cca0369cc31678cd627c01e41753a61186911cea743e" url: "https://pub.dev" source: hosted - version: "2.28.2" + version: "2.33.0" drift_dev: dependency: "direct dev" description: name: drift_dev - sha256: "68c138e884527d2bd61df2ade276c3a144df84d1adeb0ab8f3196b5afe021bd4" + sha256: b3dd5b75e30522a91da8abda9f5bb17230cb038097f6d15fa75d42bb563428aa url: "https://pub.dev" source: hosted - version: "2.28.0" + version: "2.33.0" drift_flutter: dependency: "direct main" description: name: drift_flutter - sha256: b7534bf320aac5213259aac120670ba67b63a1fd010505babc436ff86083818f + sha256: "887fdec622174dc7eaefd0048403e34ee07cc18626ac8a7544cc3b8a4a172166" url: "https://pub.dev" source: hosted - version: "0.2.7" + version: "0.3.0" equatable: dependency: transitive description: @@ -317,10 +277,10 @@ packages: dependency: "direct main" description: name: fl_chart - sha256: "74959b99b92b9eebeed1a4049426fd67c4abc3c5a0f4d12e2877097d6a11ae08" + sha256: b938f77d042cbcd822936a7a359a7235bad8bd72070de1f827efc2cc297ac888 url: "https://pub.dev" source: hosted - version: "0.69.2" + version: "1.2.0" flutter: dependency: "direct main" description: flutter @@ -330,10 +290,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "6.0.0" flutter_localizations: dependency: "direct main" description: flutter @@ -343,10 +303,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" + sha256: be3aa640f053064e2238f8a308baa5be7270645e8b53b08484fd305bd5c1eb5d url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.3.2-dev.2" flutter_test: dependency: "direct dev" description: flutter @@ -361,10 +321,10 @@ packages: dependency: "direct dev" description: name: freezed - sha256: "2d399f823b8849663744d2a9ddcce01c49268fb4170d0442a655bf6a2f47be22" + sha256: "8599ba37236328ff6f97269ecce875d251a367eb2929c9bbf9b811b2ce56c74e" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.2.6-dev.1" freezed_annotation: dependency: "direct main" description: @@ -393,18 +353,18 @@ packages: dependency: "direct main" description: name: go_router - sha256: f02fd7d2a4dc512fec615529824fdd217fecb3a3d3de68360293a551f21634b3 + sha256: "92d8cee7c57dff0a6c409c05597b460002434eccf7424a712283225b3962d03f" url: "https://pub.dev" source: hosted - version: "14.8.1" + version: "17.2.3" google_fonts: dependency: "direct main" description: name: google_fonts - sha256: ba03d03bcaa2f6cb7bd920e3b5027181db75ab524f8891c8bc3aa603885b8055 + sha256: "4e9391085e524954a51e3625b7c9c7e9851dc3f376603208bb45c24b9a66255d" url: "https://pub.dev" source: hosted - version: "6.3.3" + version: "8.1.0" graphs: dependency: transitive description: @@ -421,14 +381,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" - hotreloader: - dependency: transitive - description: - name: hotreloader - sha256: "66871df468fc24eee81f1a0a7cb98acc104716f9b7376d355437b48d633c4ebf" - url: "https://pub.dev" - source: hosted - version: "4.4.0" http: dependency: transitive description: @@ -485,30 +437,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.1" - js: - dependency: transitive - description: - name: js - sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" - url: "https://pub.dev" - source: hosted - version: "0.7.2" json_annotation: dependency: "direct main" description: name: json_annotation - sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80" url: "https://pub.dev" source: hosted - version: "4.9.0" + version: "4.12.0" json_serializable: dependency: "direct dev" description: name: json_serializable - sha256: c50ef5fc083d5b5e12eef489503ba3bf5ccc899e487d691584699b4bdefeea8c + sha256: ffcd10cde35a93b2abbbcc26bd9971f4ca93763e8abe78d855e3c4177797e501 url: "https://pub.dev" source: hosted - version: "6.9.5" + version: "6.14.0" leak_tracker: dependency: transitive description: @@ -537,10 +481,10 @@ packages: dependency: transitive description: name: lints - sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" url: "https://pub.dev" source: hosted - version: "5.1.1" + version: "6.1.0" logging: dependency: transitive description: @@ -581,6 +525,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + mockito: + dependency: transitive + description: + name: mockito + sha256: eff30d002f0c8bf073b6f929df4483b543133fcafce056870163587b03f1d422 + url: "https://pub.dev" + source: hosted + version: "5.6.4" + native_toolchain_c: + dependency: transitive + description: + name: native_toolchain_c + sha256: "49c147aa4a5905ec12028e2b7bfe360eace6cb91fe4cf08a3fe76e309592acae" + url: "https://pub.dev" + source: hosted + version: "0.19.0" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" objective_c: dependency: transitive description: @@ -713,50 +681,34 @@ packages: dependency: transitive description: name: riverpod - sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" + sha256: da7233961958420e9d80edf4b7a735d5b6b732fe2381d2a12a388562e2042b3f url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.3.2-dev.2" riverpod_analyzer_utils: dependency: transitive description: name: riverpod_analyzer_utils - sha256: "03a17170088c63aab6c54c44456f5ab78876a1ddb6032ffde1662ddab4959611" + sha256: "3e275138862ccc22ed61444a1f9a840f753094c367f28f4123f50289cd204d68" url: "https://pub.dev" source: hosted - version: "0.5.10" + version: "1.0.0-dev.10" riverpod_annotation: dependency: "direct main" description: name: riverpod_annotation - sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8 + sha256: b7fec3dcdef4cc724116b9cad9fd1ca90fb241083cc16e9cf42a85256be7e87e url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "4.0.3-dev.2" riverpod_generator: dependency: "direct dev" description: name: riverpod_generator - sha256: "44a0992d54473eb199ede00e2260bd3c262a86560e3c6f6374503d86d0580e36" + sha256: "2ba125d0f0ece0b7f2a549613803ea1d4a5e1c8b887588223b19ed8671237504" url: "https://pub.dev" source: hosted - version: "2.6.5" - riverpod_lint: - dependency: "direct dev" - description: - name: riverpod_lint - sha256: "89a52b7334210dbff8605c3edf26cfe69b15062beed5cbfeff2c3812c33c9e35" - url: "https://pub.dev" - source: hosted - version: "2.6.5" - rxdart: - dependency: transitive - description: - name: rxdart - sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" - url: "https://pub.dev" - source: hosted - version: "0.28.0" + version: "4.0.4-dev.3" shelf: dependency: transitive description: @@ -765,6 +717,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.2" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" shelf_web_socket: dependency: transitive description: @@ -782,18 +750,34 @@ packages: dependency: transitive description: name: source_gen - sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + sha256: ec37cc0e6694374cbef59ed79685572c870a54ede6fa30a3e420feb3adffea02 url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "4.2.3" source_helper: dependency: transitive description: name: source_helper - sha256: a447acb083d3a5ef17f983dd36201aeea33fedadb3228fa831f2f0c92f0f3aca + sha256: "4227d54ceefd0bb8ca4c8fcb96e1719dc53f1ee1b6e2ca9d7a6069da160e4eae" url: "https://pub.dev" source: hosted - version: "1.3.7" + version: "1.3.12" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" + url: "https://pub.dev" + source: hosted + version: "0.10.13" source_span: dependency: transitive description: @@ -802,30 +786,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.2" + sqlcipher_flutter_libs: + dependency: transitive + description: + name: sqlcipher_flutter_libs + sha256: "38d62d659d2fb8739bf25a42c9a350d1fdd6c29a5a61f13a946778ec75d27929" + url: "https://pub.dev" + source: hosted + version: "0.7.0+eol" sqlite3: dependency: transitive description: name: sqlite3 - sha256: "3145bd74dcdb4fd6f5c6dda4d4e4490a8087d7f286a14dee5d37087290f0f8a2" + sha256: "9488c7d2cdb1091c91cacf7e207cff81b28bff8e366f042bad3afe7d34afe189" url: "https://pub.dev" source: hosted - version: "2.9.4" + version: "3.3.2" sqlite3_flutter_libs: dependency: transitive description: name: sqlite3_flutter_libs - sha256: eeb9e3a45207649076b808f8a5a74d68770d0b7f26ccef6d5f43106eee5375ad + sha256: "3ed7553eee7bb368f8950f58ba29f634e06e813c029aff6a0d60862b96de8454" url: "https://pub.dev" source: hosted - version: "0.5.42" + version: "0.6.0+eol" sqlparser: dependency: transitive description: name: sqlparser - sha256: "57090342af1ce32bb499aa641f4ecdd2d6231b9403cea537ac059e803cc20d67" + sha256: ecdc06d4a7d79dcbc928d99afd2f7f5b0f98a637c46f89be83d911617f759978 url: "https://pub.dev" source: hosted - version: "0.41.2" + version: "0.44.4" stack_trace: dependency: transitive description: @@ -874,6 +866,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.2" + test: + dependency: transitive + description: + name: test + sha256: "8d9ceddbab833f180fbefed08afa76d7c03513dfdba87ffcec2718b02bbcbf20" + url: "https://pub.dev" + source: hosted + version: "1.31.0" test_api: dependency: transitive description: @@ -882,14 +882,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.11" - timing: + test_core: dependency: transitive description: - name: timing - sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" + name: test_core + sha256: "1991d4cfe85d5043241acac92962c3977c8d2f2add1ee73130c7b286417d1d34" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "0.6.17" typed_data: dependency: transitive description: @@ -954,6 +954,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 93d57ec..02fe264 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -13,15 +13,15 @@ dependencies: sdk: flutter # State management - flutter_riverpod: ^2.6.1 - riverpod_annotation: ^2.6.1 + flutter_riverpod: ^3.1.0 + riverpod_annotation: ^4.0.0 # Database drift: ^2.26.1 - drift_flutter: ^0.2.4 + drift_flutter: ^0.3.0 # Navigation - go_router: ^14.8.1 + go_router: ^17.2.3 # Immutable entities freezed_annotation: ^3.0.0 @@ -34,23 +34,21 @@ dependencies: cupertino_icons: ^1.0.8 # Fonts - google_fonts: ^6.2.1 + google_fonts: ^8.1.0 # Charts - fl_chart: ^0.69.0 + fl_chart: ^1.2.0 dev_dependencies: flutter_test: sdk: flutter # Lints - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # Code generation build_runner: ^2.4.15 - riverpod_generator: ^2.6.5 - riverpod_lint: ^2.6.5 - custom_lint: ^0.7.5 + riverpod_generator: ^4.0.0+1 drift_dev: ^2.26.1 freezed: ^3.0.0 json_serializable: ^6.9.5