diff --git a/analysis_options.yaml b/analysis_options.yaml index f9b3034..303fb91 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1 +1,195 @@ -include: package:flutter_lints/flutter.yaml +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +# include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + - always_declare_return_types + - always_put_required_named_parameters_first + - always_require_non_null_named_parameters + - always_use_package_imports + - annotate_overrides + - avoid_bool_literals_in_conditional_expressions + - avoid_catching_errors + - avoid_double_and_int_checks + - avoid_dynamic_calls + - avoid_empty_else + - avoid_escaping_inner_quotes + - avoid_field_initializers_in_const_classes + # We are already using the `parameter_assignments` lint. + # Adding final to parameters has the same effect as `parameter_assignments` + # so it doesn't make sense to use final parameters with `parameter_assignments`. + - avoid_final_parameters + - avoid_function_literals_in_foreach_calls + - avoid_implementing_value_types + - avoid_init_to_null + - avoid_multiple_declarations_per_line + - avoid_null_checks_in_equality_operators + - avoid_positional_boolean_parameters + - avoid_print + - avoid_private_typedef_functions + - avoid_redundant_argument_values + - avoid_relative_lib_imports + - avoid_renaming_method_parameters + - avoid_return_types_on_setters + - avoid_returning_null_for_future + - avoid_returning_null_for_void + - avoid_setters_without_getters + - avoid_shadowing_type_parameters + - avoid_single_cascade_in_expression_statements + - avoid_type_to_string + - avoid_types_as_parameter_names + - avoid_unnecessary_containers + - avoid_unused_constructor_parameters + - avoid_void_async + - await_only_futures + - camel_case_extensions + - camel_case_types + - cancel_subscriptions + # Similar to avoid-non-null-assertion, which is already used, + # basically it suggests to not ignore possible null value + - cast_nullable_to_non_nullable + - close_sinks + - comment_references + - conditional_uri_does_not_exist + - constant_identifier_names + - control_flow_in_finally + - curly_braces_in_flow_control_structures + - depend_on_referenced_packages + - deprecated_consistency + # - diagnostic_describe_all_properties + - directives_ordering + - empty_catches + - empty_constructor_bodies + - empty_statements + - eol_at_end_of_file + - exhaustive_cases + - file_names + - hash_and_equals + - implementation_imports + - join_return_with_assignment + - leading_newlines_in_multiline_strings + - library_names + - library_prefixes + - lines_longer_than_80_chars + - literal_only_boolean_expressions + - no_adjacent_strings_in_list + - no_duplicate_case_values + - no_leading_underscores_for_library_prefixes + - no_leading_underscores_for_local_identifiers + - no_logic_in_create_state + - no_runtimeType_toString + - non_constant_identifier_names + - noop_primitive_operations + - null_check_on_nullable_type_parameter + - overridden_fields + - package_names + - package_prefixed_library_names + - parameter_assignments + - prefer_adjacent_string_concatenation + - prefer_asserts_in_initializer_lists + - prefer_collection_literals + - prefer_conditional_assignment + - prefer_const_constructors + - prefer_const_constructors_in_immutables + - prefer_const_declarations + - prefer_const_literals_to_create_immutables + - prefer_constructors_over_static_methods + - prefer_contains + # These two are incompatible, and one should be selected depending on your project's style. + # - prefer_double_quotes + - prefer_single_quotes + - prefer_final_fields + - prefer_final_in_for_each + - prefer_final_locals + - prefer_foreach + - prefer_for_elements_to_map_fromIterable + - prefer_function_declarations_over_variables + - prefer_generic_function_type_aliases + - prefer_if_elements_to_conditional_expressions + - prefer_if_null_operators + - prefer_initializing_formals + - prefer_inlined_adds + - prefer_interpolation_to_compose_strings + - prefer_is_empty + - prefer_is_not_empty + - prefer_is_not_operator + - prefer_iterable_whereType + - prefer_null_aware_method_calls + - prefer_null_aware_operators + - prefer_spread_collections + - prefer_typing_uninitialized_variables + - prefer_void_to_null + - provide_deprecation_message + # - public_member_api_docs + - recursive_getters + - require_trailing_commas + - secure_pubspec_urls + - sized_box_for_whitespace + - sized_box_shrink_expand + - slash_for_doc_comments + - sort_child_properties_last + - sort_constructors_first + - sort_pub_dependencies + - sort_unnamed_constructors_first + - test_types_in_equals + - throw_in_finally + - tighten_type_of_initializing_formals + - type_annotate_public_apis + - type_init_formals + - unawaited_futures + - unnecessary_await_in_return + - unnecessary_brace_in_string_interps + - unnecessary_breaks + - unnecessary_const + - unnecessary_getters_setters + - unnecessary_lambdas + - unnecessary_new + - unnecessary_null_aware_assignments + - unnecessary_null_checks + - unnecessary_null_in_if_null_operators + - unnecessary_nullable_for_final_variable_declarations + - unnecessary_overrides + - unnecessary_parenthesis + - unnecessary_raw_strings + - unnecessary_statements + - unnecessary_string_escapes + - unnecessary_string_interpolations + - unnecessary_this + - unnecessary_to_list_in_spreads + - unrelated_type_equality_checks + - unsafe_html + - use_build_context_synchronously + - use_colored_box + - use_decorated_box + - use_full_hex_values_for_flutter_colors + - use_function_type_syntax_for_parameters + - use_if_null_to_convert_nulls_to_bools + - use_is_even_rather_than_modulo + - use_named_constants + - use_raw_strings + - use_rethrow_when_possible + # - use_setters_to_change_properties + - use_string_buffers + - use_super_parameters + - use_test_throws_matchers + - valid_regexps + - void_checks diff --git a/lib/config/localisation/localizations.dart b/lib/config/localisation/localizations.dart index 2341d2f..1a009e2 100644 --- a/lib/config/localisation/localizations.dart +++ b/lib/config/localisation/localizations.dart @@ -5,13 +5,10 @@ import 'package:flutter/services.dart'; import 'package:widgets_app/models/language_model.dart'; import 'package:widgets_app/models/locale_model.dart'; -// import '../models/language_model.dart'; -// import '../models/locale_model.dart'; - class AppLocalizations { - final Locale locale; AppLocalizations(this.locale); + final Locale locale; static AppLocalizations? of(BuildContext context) { return Localizations.of(context, AppLocalizations); @@ -25,14 +22,14 @@ class AppLocalizations { Future load(Locale locale) async { jsonContent = await rootBundle - .loadString("assets/locale/localization_${locale.languageCode}.json"); + .loadString('assets/locale/localization_${locale.languageCode}.json'); _localizedValues = jsonDecode(jsonContent); return this; } String text(String key) { - return _localizedValues![key] ?? "$key not found"; + return _localizedValues![key] ?? '$key not found'; } LocaleModel value() { @@ -51,7 +48,7 @@ class AppLocalizationsDelegate extends LocalizationsDelegate { @override Future load(Locale locale) async { - AppLocalizations appLocalizations = AppLocalizations(locale); + final AppLocalizations appLocalizations = AppLocalizations(locale); await appLocalizations.load(locale); return appLocalizations; } diff --git a/lib/config/menu/menu_items.dart b/lib/config/menu/menu_items.dart index 5729b39..2961fc4 100644 --- a/lib/config/menu/menu_items.dart +++ b/lib/config/menu/menu_items.dart @@ -1,10 +1,6 @@ import 'package:flutter/material.dart'; class MenuItem { - final String title; - final String subTitle; - final String link; - final IconData icon; const MenuItem({ required this.title, @@ -12,6 +8,10 @@ class MenuItem { required this.link, required this.icon, }); + final String title; + final String subTitle; + final String link; + final IconData icon; } // @@ -20,50 +20,50 @@ const List appMenuItems = [ title: 'buttons', subTitle: 'sub_buttons', link: '/buttons', - icon: Icons.smart_button_outlined), + icon: Icons.smart_button_outlined,), MenuItem( title: 'cards', subTitle: 'sub_cards', link: '/cards', - icon: Icons.card_membership_outlined), + icon: Icons.card_membership_outlined,), MenuItem( title: 'progress_indicators', subTitle: 'sub_proInd', link: '/progress', - icon: Icons.refresh_rounded), + icon: Icons.refresh_rounded,), MenuItem( title: 'snackbars_dialogs', subTitle: 'sub_snack_dia', link: '/snackbars', - icon: Icons.info_outline), + icon: Icons.info_outline,), MenuItem( title: 'anim_contain', subTitle: 'sub_anim_cont', link: '/animated', - icon: Icons.check_box_outline_blank_outlined), + icon: Icons.check_box_outline_blank_outlined,), MenuItem( title: 'ui_cont_tiles', subTitle: 'sub_ui_cont_tiles', link: '/ui_controls', - icon: Icons.car_rental_sharp), + icon: Icons.car_rental_sharp,), MenuItem( title: 'app_intro', subTitle: 'app_intro_sub', link: '/tutorial', - icon: Icons.accessibility_new_rounded), + icon: Icons.accessibility_new_rounded,), MenuItem( title: 'infinite_scroll', - subTitle: "sub_infi_scroll", + subTitle: 'sub_infi_scroll', link: '/infinite', - icon: Icons.list_alt_outlined), + icon: Icons.list_alt_outlined,), MenuItem( title: 'counter_sceen', subTitle: 'sub_counter', link: '/counter', - icon: Icons.numbers), + icon: Icons.numbers,), MenuItem( title: 'change_theme', subTitle: 'change_apptheme', link: '/theme_changer', - icon: Icons.color_lens_outlined), + icon: Icons.color_lens_outlined,), ]; diff --git a/lib/config/theme/app_theme.dart b/lib/config/theme/app_theme.dart index 33c2983..6309446 100644 --- a/lib/config/theme/app_theme.dart +++ b/lib/config/theme/app_theme.dart @@ -13,13 +13,13 @@ const List colorList = [ ]; class AppTheme { - final int selectedColor; - final bool isDarkMode; AppTheme({this.isDarkMode = false, this.selectedColor = 0}) : assert(selectedColor >= 0, 'selectedColor must be greater then 0'), assert(selectedColor < colorList.length, - 'selectedColor must be less or equal than ${colorList.length}'); + 'selectedColor must be less or equal than ${colorList.length}',); + final int selectedColor; + final bool isDarkMode; ThemeData getTheme() => ThemeData( brightness: isDarkMode ? Brightness.dark : Brightness.light, diff --git a/lib/main.dart b/lib/main.dart index 7623abc..cd39029 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,14 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:widgets_app/config/localisation/localizations.dart'; import 'package:widgets_app/config/router/app_router.dart'; import 'package:widgets_app/config/theme/app_theme.dart'; import 'package:widgets_app/models/language_model.dart'; +import 'package:widgets_app/presentation/providers/language_provider.dart'; import 'package:widgets_app/presentation/providers/theme_provider.dart'; -import 'config/localisation/localizations.dart'; -import 'presentation/providers/language_provider.dart'; - void main() { runApp( const ProviderScope( @@ -21,7 +20,7 @@ class MainApp extends ConsumerWidget { const MainApp({super.key}); @override - Widget build(BuildContext context, ref) { + Widget build(BuildContext context, WidgetRef ref) { final LanguageEntity locale = ref.watch(localeProvider); // final isDarkMode = ref.watch(isDarkModeProvider); // final selectedColor = ref.watch(selectedColorProvider); @@ -33,10 +32,10 @@ class MainApp extends ConsumerWidget { GlobalCupertinoLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], - supportedLocales: const [Locale('en', 'IN'), Locale('es', "ES")], + supportedLocales: const [Locale('en', 'IN'), Locale('es', 'ES')], localeResolutionCallback: (Locale? locale, Iterable supportedLocales) { - for (Locale supportedLocale in supportedLocales) { + for (final Locale supportedLocale in supportedLocales) { if (supportedLocale.languageCode == locale!.languageCode || supportedLocale.countryCode == locale.countryCode) { return supportedLocale; diff --git a/lib/models/language_model.dart b/lib/models/language_model.dart index 059f850..ca0568e 100644 --- a/lib/models/language_model.dart +++ b/lib/models/language_model.dart @@ -1,9 +1,9 @@ class LanguageEntity { + + const LanguageEntity({required this.code, required this.value, this.text}); final String code; final String value; final String? text; - - const LanguageEntity({required this.code, required this.value, this.text}); } class Languages { @@ -11,7 +11,7 @@ class Languages { // Languages supported static const languages = [ - LanguageEntity(code: 'en', value: 'IN', text: "English"), - LanguageEntity(code: 'es', value: 'ES', text: "Spanish"), + LanguageEntity(code: 'en', value: 'IN', text: 'English'), + LanguageEntity(code: 'es', value: 'ES', text: 'Spanish'), ]; } diff --git a/lib/models/locale_model.dart b/lib/models/locale_model.dart index e93d54e..eb4b605 100644 --- a/lib/models/locale_model.dart +++ b/lib/models/locale_model.dart @@ -1,57 +1,4 @@ class LocaleModel { - late String buttons; - late String subButtons; - late String cards; - late String subCards; - late String progressIndicators; - late String subProInd; - late String snackbarsDialogs; - late String subSnackDia; - late String animContain; - late String subAnimCont; - late String uiContTiles; - late String subUiContTiles; - late String appIntro; - late String appIntroSub; - late String infiniteScroll; - late String subInfiScroll; - late String counterSceen; - late String subCounter; - late String changeTheme; - late String changeApptheme; - late String introTit1; - late String introSub1; - late String introTit2; - late String introSub2; - late String introTit3; - late String introSub3; - late String skip; - late String start; - late String count; - late String checked; - late String thisColor; - late String additionalControls; - late String transportVehicles; - late String byCar; - late String travelByCar; - late String byPlane; - late String travelByPlane; - late String byBoat; - late String travelByBoat; - late String bySubmarine; - late String travelBySubm; - late String breakfast; - late String lunch; - late String dinner; - late String showSnackbar; - late String showDialog; - late String dialogMsg; - late String licenseUsed; - late String youreSure; - late String agreeMsg; - late String cancel; - late String confirm; - late String helloWorld; LocaleModel({ required this.buttons, @@ -110,60 +57,113 @@ class LocaleModel { }); LocaleModel.fromJson(Map json) { - buttons = json['buttons'] ?? ""; - subButtons = json['sub_buttons'] ?? ""; - cards = json['cards'] ?? ""; - subCards = json['sub_cards'] ?? ""; - progressIndicators = json['progress_indicators'] ?? ""; - subProInd = json['sub_proInd'] ?? ""; - snackbarsDialogs = json['snackbars_dialogs'] ?? ""; - subSnackDia = json['sub_snack_dia'] ?? ""; - animContain = json['anim_contain'] ?? ""; - subAnimCont = json['sub_anim_cont'] ?? ""; - uiContTiles = json['ui_cont_tiles'] ?? ""; - subUiContTiles = json['sub_ui_cont_tiles'] ?? ""; - appIntro = json['app_intro'] ?? ""; - appIntroSub = json['app_intro_sub'] ?? ""; - infiniteScroll = json['infinite_scroll'] ?? ""; - subInfiScroll = json['sub_infi_scroll'] ?? ""; - counterSceen = json['counter_sceen'] ?? ""; - subCounter = json['sub_counter'] ?? ""; - changeTheme = json['change_theme'] ?? ""; - changeApptheme = json['change_apptheme'] ?? ""; - introTit1 = json['intro_tit_1'] ?? ""; - introSub1 = json['intro_sub_1'] ?? ""; - introTit2 = json['intro_tit_2'] ?? ""; - introSub2 = json['intro_sub_2'] ?? ""; - introTit3 = json['intro_tit_3'] ?? ""; - introSub3 = json['intro_sub_3'] ?? ""; - skip = json['skip'] ?? ""; - start = json['start'] ?? ""; - count = json['count'] ?? ""; - checked = json['checked'] ?? ""; - thisColor = json['this_color'] ?? ""; - additionalControls = json['additional_controls'] ?? ""; - transportVehicles = json['transport_vehicles'] ?? ""; - byCar = json['by_car'] ?? ""; - travelByCar = json['travel_by_car'] ?? ""; - byPlane = json['by plane'] ?? ""; - travelByPlane = json['travel_by_plane'] ?? ""; - byBoat = json['by boat'] ?? ""; - travelByBoat = json['travel_by_boat'] ?? ""; - bySubmarine = json['by_submarine'] ?? ""; - travelBySubm = json['travel_by_subm'] ?? ""; - breakfast = json['breakfast'] ?? ""; - lunch = json['lunch'] ?? ""; - dinner = json['dinner'] ?? ""; - showSnackbar = json['show_snackbar'] ?? ""; - showDialog = json['show_dialog'] ?? ""; - dialogMsg = json['dialog_msg'] ?? ""; - licenseUsed = json['license_used'] ?? ""; - youreSure = json['youre_sure'] ?? ""; - agreeMsg = json['agree_msg'] ?? ""; - cancel = json['cancel'] ?? ""; - confirm = json['confirm'] ?? ""; - helloWorld = json['hello_world'] ?? ""; + buttons = json['buttons'] ?? ''; + subButtons = json['sub_buttons'] ?? ''; + cards = json['cards'] ?? ''; + subCards = json['sub_cards'] ?? ''; + progressIndicators = json['progress_indicators'] ?? ''; + subProInd = json['sub_proInd'] ?? ''; + snackbarsDialogs = json['snackbars_dialogs'] ?? ''; + subSnackDia = json['sub_snack_dia'] ?? ''; + animContain = json['anim_contain'] ?? ''; + subAnimCont = json['sub_anim_cont'] ?? ''; + uiContTiles = json['ui_cont_tiles'] ?? ''; + subUiContTiles = json['sub_ui_cont_tiles'] ?? ''; + appIntro = json['app_intro'] ?? ''; + appIntroSub = json['app_intro_sub'] ?? ''; + infiniteScroll = json['infinite_scroll'] ?? ''; + subInfiScroll = json['sub_infi_scroll'] ?? ''; + counterSceen = json['counter_sceen'] ?? ''; + subCounter = json['sub_counter'] ?? ''; + changeTheme = json['change_theme'] ?? ''; + changeApptheme = json['change_apptheme'] ?? ''; + introTit1 = json['intro_tit_1'] ?? ''; + introSub1 = json['intro_sub_1'] ?? ''; + introTit2 = json['intro_tit_2'] ?? ''; + introSub2 = json['intro_sub_2'] ?? ''; + introTit3 = json['intro_tit_3'] ?? ''; + introSub3 = json['intro_sub_3'] ?? ''; + skip = json['skip'] ?? ''; + start = json['start'] ?? ''; + count = json['count'] ?? ''; + checked = json['checked'] ?? ''; + thisColor = json['this_color'] ?? ''; + additionalControls = json['additional_controls'] ?? ''; + transportVehicles = json['transport_vehicles'] ?? ''; + byCar = json['by_car'] ?? ''; + travelByCar = json['travel_by_car'] ?? ''; + byPlane = json['by plane'] ?? ''; + travelByPlane = json['travel_by_plane'] ?? ''; + byBoat = json['by boat'] ?? ''; + travelByBoat = json['travel_by_boat'] ?? ''; + bySubmarine = json['by_submarine'] ?? ''; + travelBySubm = json['travel_by_subm'] ?? ''; + breakfast = json['breakfast'] ?? ''; + lunch = json['lunch'] ?? ''; + dinner = json['dinner'] ?? ''; + showSnackbar = json['show_snackbar'] ?? ''; + showDialog = json['show_dialog'] ?? ''; + dialogMsg = json['dialog_msg'] ?? ''; + licenseUsed = json['license_used'] ?? ''; + youreSure = json['youre_sure'] ?? ''; + agreeMsg = json['agree_msg'] ?? ''; + cancel = json['cancel'] ?? ''; + confirm = json['confirm'] ?? ''; + helloWorld = json['hello_world'] ?? ''; } + late String buttons; + late String subButtons; + late String cards; + late String subCards; + late String progressIndicators; + late String subProInd; + late String snackbarsDialogs; + late String subSnackDia; + late String animContain; + late String subAnimCont; + late String uiContTiles; + late String subUiContTiles; + late String appIntro; + late String appIntroSub; + late String infiniteScroll; + late String subInfiScroll; + late String counterSceen; + late String subCounter; + late String changeTheme; + late String changeApptheme; + late String introTit1; + late String introSub1; + late String introTit2; + late String introSub2; + late String introTit3; + late String introSub3; + late String skip; + late String start; + late String count; + late String checked; + late String thisColor; + late String additionalControls; + late String transportVehicles; + late String byCar; + late String travelByCar; + late String byPlane; + late String travelByPlane; + late String byBoat; + late String travelByBoat; + late String bySubmarine; + late String travelBySubm; + late String breakfast; + late String lunch; + late String dinner; + late String showSnackbar; + late String showDialog; + late String dialogMsg; + late String licenseUsed; + late String youreSure; + late String agreeMsg; + late String cancel; + late String confirm; + late String helloWorld; Map toJson() { final Map data = {}; diff --git a/lib/presentation/providers/language_provider.dart b/lib/presentation/providers/language_provider.dart index 14e2160..01f0fa8 100644 --- a/lib/presentation/providers/language_provider.dart +++ b/lib/presentation/providers/language_provider.dart @@ -1,19 +1,23 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:widgets_app/models/language_model.dart'; -final locale = - StateProvider((selectedLang) => const LanguageEntity( - code: "en", - value: "IN", - text: "English", - )); +final locale = StateProvider( + (selectedLang) => const LanguageEntity( + code: 'en', + value: 'IN', + text: 'English', + ), +); final localeProvider = StateNotifierProvider( - (ref) => LangNotifier(const LanguageEntity( - code: "en", - value: "IN", - text: "English", - ))); + (ref) => LangNotifier( + const LanguageEntity( + code: 'en', + value: 'IN', + text: 'English', + ), + ), +); class LangNotifier extends StateNotifier { LangNotifier(super.state); diff --git a/lib/presentation/screens/animated/animated_screen.dart b/lib/presentation/screens/animated/animated_screen.dart index 2f7d98e..ef3a0cd 100644 --- a/lib/presentation/screens/animated/animated_screen.dart +++ b/lib/presentation/screens/animated/animated_screen.dart @@ -3,9 +3,9 @@ import 'dart:math'; import 'package:flutter/material.dart'; class AnimatedScreen extends StatefulWidget { - static const route = 'animated_screen'; const AnimatedScreen({super.key}); + static const route = 'animated_screen'; @override State createState() => _AnimatedScreenState(); @@ -18,7 +18,7 @@ class _AnimatedScreenState extends State { double bordeRadius = 10; void changeShape() { - Random rnd = Random(); + final Random rnd = Random(); width = rnd.nextInt(300) + 50; height = rnd.nextInt(300) + 50; bordeRadius = rnd.nextInt(300) + 10; @@ -44,9 +44,7 @@ class _AnimatedScreenState extends State { ), ), floatingActionButton: FloatingActionButton( - onPressed: () { - changeShape(); - }, + onPressed: changeShape, child: const Icon(Icons.play_arrow), ), ); diff --git a/lib/presentation/screens/app_tutorial/app_tutorial_screen.dart b/lib/presentation/screens/app_tutorial/app_tutorial_screen.dart index 9b644fa..26774d8 100644 --- a/lib/presentation/screens/app_tutorial/app_tutorial_screen.dart +++ b/lib/presentation/screens/app_tutorial/app_tutorial_screen.dart @@ -4,21 +4,21 @@ import 'package:go_router/go_router.dart'; import 'package:widgets_app/config/localisation/localizations.dart'; class SlideInfo { - final String title; - final String caption; - final String imageUrl; SlideInfo({ required this.title, required this.caption, required this.imageUrl, }); + final String title; + final String caption; + final String imageUrl; } class AppTutorialScreen extends StatefulWidget { - static const route = 'tutorial_screen'; const AppTutorialScreen({super.key}); + static const route = 'tutorial_screen'; @override State createState() => _AppTutorialScreenState(); @@ -54,9 +54,9 @@ class _AppTutorialScreenState extends State { slides = [ for (var i = 1; i <= 3; i++) SlideInfo( - title: AppLocalizations.of(context)!.text("intro_tit_$i"), - caption: AppLocalizations.of(context)!.text("intro_sub_$i"), - imageUrl: 'assets/images/$i.png'), + title: AppLocalizations.of(context)!.text('intro_tit_$i'), + caption: AppLocalizations.of(context)!.text('intro_sub_$i'), + imageUrl: 'assets/images/$i.png',), ]; return Scaffold( backgroundColor: Colors.white, @@ -69,7 +69,7 @@ class _AppTutorialScreenState extends State { .map((slide) => _Slide( title: slide.title, imageUrl: slide.imageUrl, - caption: slide.caption)) + caption: slide.caption,),) .toList(), ), Positioned( @@ -77,7 +77,7 @@ class _AppTutorialScreenState extends State { top: 50, child: TextButton( child: Text( - AppLocalizations.of(context)!.text("skip"), + AppLocalizations.of(context)!.text('skip'), style: const TextStyle( fontSize: 22, ), @@ -87,8 +87,7 @@ class _AppTutorialScreenState extends State { }, ), ), - endReach - ? Positioned( + if (endReach) Positioned( bottom: 30, right: 30, child: FadeInRight( @@ -99,12 +98,11 @@ class _AppTutorialScreenState extends State { context.pop(); }, child: Text( - AppLocalizations.of(context)!.text("skip"), + AppLocalizations.of(context)!.text('skip'), ), ), ), - ) - : const SizedBox() + ) else const SizedBox(), ], ), ); @@ -112,11 +110,11 @@ class _AppTutorialScreenState extends State { } class _Slide extends StatelessWidget { + const _Slide( + {required this.title, required this.caption, required this.imageUrl,}); final String title; final String caption; final String imageUrl; - const _Slide( - {required this.title, required this.caption, required this.imageUrl}); @override Widget build(BuildContext context) { diff --git a/lib/presentation/screens/buttons/buttons_screen.dart b/lib/presentation/screens/buttons/buttons_screen.dart index e6a3ef9..c45fea0 100644 --- a/lib/presentation/screens/buttons/buttons_screen.dart +++ b/lib/presentation/screens/buttons/buttons_screen.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; class ButtonsScreen extends StatelessWidget { - static const String route = 'buttons_screen'; const ButtonsScreen({super.key}); + static const String route = 'buttons_screen'; @override Widget build(BuildContext context) { @@ -40,11 +40,14 @@ class _ButtonsView extends StatelessWidget { children: [ ElevatedButton(onPressed: () {}, child: const Text('Elevated')), const ElevatedButton( - onPressed: null, child: Text('Elevated Disabled')), + onPressed: null, + child: Text('Elevated Disabled'), + ), ElevatedButton.icon( - onPressed: () {}, - icon: const Icon(Icons.access_alarm_rounded), - label: const Text('Elevated Icon')), + onPressed: () {}, + icon: const Icon(Icons.access_alarm_rounded), + label: const Text('Elevated Icon'), + ), FilledButton(onPressed: () {}, child: const Text('Filled')), FilledButton.icon( onPressed: () {}, @@ -53,9 +56,10 @@ class _ButtonsView extends StatelessWidget { ), OutlinedButton(onPressed: () {}, child: const Text('Outline')), OutlinedButton.icon( - onPressed: () {}, - label: const Text('Outline Icon'), - icon: const Icon(Icons.terminal)), + onPressed: () {}, + label: const Text('Outline Icon'), + icon: const Icon(Icons.terminal), + ), TextButton(onPressed: () {}, child: const Text('Text')), TextButton.icon( onPressed: () {}, @@ -64,8 +68,9 @@ class _ButtonsView extends StatelessWidget { ), const CustomButton(), IconButton( - onPressed: () {}, - icon: const Icon(Icons.app_registration_rounded)), + onPressed: () {}, + icon: const Icon(Icons.app_registration_rounded), + ), IconButton( onPressed: () {}, icon: const Icon(Icons.app_registration_rounded), @@ -95,8 +100,9 @@ class CustomButton extends StatelessWidget { child: InkWell( onTap: () {}, child: const Padding( - padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10), - child: Text('Hola Mundo', style: TextStyle(color: Colors.white))), + padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10), + child: Text('Hola Mundo', style: TextStyle(color: Colors.white)), + ), ), ), ); diff --git a/lib/presentation/screens/cards/cards_screen.dart b/lib/presentation/screens/cards/cards_screen.dart index 98c0b48..65efee3 100644 --- a/lib/presentation/screens/cards/cards_screen.dart +++ b/lib/presentation/screens/cards/cards_screen.dart @@ -10,9 +10,9 @@ const cards = >[ ]; class CardsScreen extends StatelessWidget { - static const String route = 'cards_screen'; const CardsScreen({super.key}); + static const String route = 'cards_screen'; @override Widget build(BuildContext context) { @@ -57,10 +57,10 @@ class _CardsView extends StatelessWidget { } class _CardType1 extends StatelessWidget { - final String label; - final double elevation; const _CardType1({required this.label, required this.elevation}); + final String label; + final double elevation; @override Widget build(BuildContext context) { @@ -80,7 +80,7 @@ class _CardType1 extends StatelessWidget { Align( alignment: Alignment.bottomLeft, child: Text(label), - ) + ), ], ), ), @@ -89,10 +89,10 @@ class _CardType1 extends StatelessWidget { } class _CardType2 extends StatelessWidget { - final String label; - final double elevation; const _CardType2({required this.label, required this.elevation}); + final String label; + final double elevation; @override Widget build(BuildContext context) { @@ -101,7 +101,7 @@ class _CardType2 extends StatelessWidget { return Card( shape: RoundedRectangleBorder( borderRadius: const BorderRadius.all(Radius.circular(12)), - side: BorderSide(color: colors.outline)), + side: BorderSide(color: colors.outline),), elevation: elevation, child: Padding( padding: const EdgeInsets.fromLTRB(10, 5, 10, 10), @@ -117,7 +117,7 @@ class _CardType2 extends StatelessWidget { Align( alignment: Alignment.bottomLeft, child: Text('$label - outline'), - ) + ), ], ), ), @@ -126,10 +126,10 @@ class _CardType2 extends StatelessWidget { } class _CardType3 extends StatelessWidget { - final String label; - final double elevation; const _CardType3({required this.label, required this.elevation}); + final String label; + final double elevation; @override Widget build(BuildContext context) { @@ -152,7 +152,7 @@ class _CardType3 extends StatelessWidget { Align( alignment: Alignment.bottomLeft, child: Text('$label - Filled'), - ) + ), ], ), ), @@ -161,10 +161,10 @@ class _CardType3 extends StatelessWidget { } class _CardType4 extends StatelessWidget { - final String label; - final double elevation; const _CardType4({required this.label, required this.elevation}); + final String label; + final double elevation; @override Widget build(BuildContext context) { @@ -180,11 +180,11 @@ class _CardType4 extends StatelessWidget { ), Align( alignment: Alignment.topRight, - child: Container( + child: DecoratedBox( decoration: const BoxDecoration( color: Colors.white, borderRadius: - BorderRadius.only(bottomLeft: Radius.circular(20))), + BorderRadius.only(bottomLeft: Radius.circular(20)),), child: IconButton( icon: const Icon(Icons.more_vert_outlined), onPressed: () {}, diff --git a/lib/presentation/screens/counter/counter_screen.dart b/lib/presentation/screens/counter/counter_screen.dart index 6717aad..1572b37 100644 --- a/lib/presentation/screens/counter/counter_screen.dart +++ b/lib/presentation/screens/counter/counter_screen.dart @@ -5,8 +5,8 @@ import 'package:widgets_app/presentation/providers/counter_provider.dart'; import 'package:widgets_app/presentation/providers/theme_provider.dart'; class CounterScreen extends ConsumerWidget { - static const route = 'counter_screen'; const CounterScreen({super.key}); + static const route = 'counter_screen'; @override Widget build(BuildContext context, WidgetRef ref) { final style = Theme.of(context).textTheme.titleLarge; @@ -21,7 +21,7 @@ class CounterScreen extends ConsumerWidget { onPressed: () { ref.read(themeNotifierProvider.notifier).toggleDarkMode(); }, - ) + ), ], ), body: Center( diff --git a/lib/presentation/screens/home/home_screen.dart b/lib/presentation/screens/home/home_screen.dart index 08991ce..fec37f7 100644 --- a/lib/presentation/screens/home/home_screen.dart +++ b/lib/presentation/screens/home/home_screen.dart @@ -6,9 +6,9 @@ import 'package:widgets_app/presentation/widgets/side_menu.dart'; // import 'package:widgets_app/presentation/screens/cards/cards_screen.dart'; class HomeScreen extends StatelessWidget { - static const String route = 'home_screen'; const HomeScreen({super.key}); + static const String route = 'home_screen'; @override Widget build(BuildContext context) { diff --git a/lib/presentation/screens/infinite_scroll/infinite_scroll_screen.dart b/lib/presentation/screens/infinite_scroll/infinite_scroll_screen.dart index fd92769..70ec5e1 100644 --- a/lib/presentation/screens/infinite_scroll/infinite_scroll_screen.dart +++ b/lib/presentation/screens/infinite_scroll/infinite_scroll_screen.dart @@ -3,9 +3,9 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; class InfiniteScrollScreen extends StatefulWidget { - static const route = 'infinite_screen'; const InfiniteScrollScreen({super.key}); + static const route = 'infinite_screen'; @override State createState() => _InfiniteScrollScreenState(); @@ -40,7 +40,7 @@ class _InfiniteScrollScreenState extends State { scrollController.position.maxScrollExtent) return; scrollController.animateTo(scrollController.position.pixels + 120, duration: const Duration(milliseconds: 300), - curve: Curves.fastOutSlowIn); + curve: Curves.fastOutSlowIn,); } void addFiveImages() { diff --git a/lib/presentation/screens/progress/progress_screen.dart b/lib/presentation/screens/progress/progress_screen.dart index 1dd689e..a48a031 100644 --- a/lib/presentation/screens/progress/progress_screen.dart +++ b/lib/presentation/screens/progress/progress_screen.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; import 'package:widgets_app/config/localisation/localizations.dart'; class ProgressScreen extends StatelessWidget { - static const route = 'progress_screen'; const ProgressScreen({super.key}); + static const route = 'progress_screen'; @override Widget build(BuildContext context) { @@ -22,6 +22,7 @@ class _ProgressView extends StatelessWidget { @override Widget build(BuildContext context) { + final checked = AppLocalizations.of(context)!.text('checked'); return Center( child: Column( children: [ @@ -34,7 +35,8 @@ class _ProgressView extends StatelessWidget { ), const SizedBox(height: 30), Text( - 'Circular Progress indicator ${AppLocalizations.of(context)!.text('checked')} '), + 'Circular Progress indicator $checked ', + ), const SizedBox(height: 10), const _ControlledProgressIndicator(), ], @@ -49,27 +51,29 @@ class _ControlledProgressIndicator extends StatelessWidget { @override Widget build(BuildContext context) { return StreamBuilder( - stream: Stream.periodic(const Duration(milliseconds: 300), (value) { - return 2 * value / 100; - }).takeWhile((value) => value < 100), - builder: (context, snapshot) { - final double progressValue = snapshot.data ?? 0; - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - CircularProgressIndicator( + stream: Stream.periodic(const Duration(milliseconds: 300), (value) { + return 2 * value / 100; + }).takeWhile((value) => value < 100), + builder: (context, snapshot) { + final double progressValue = snapshot.data ?? 0; + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircularProgressIndicator( + value: progressValue, + strokeWidth: 2, + ), + const SizedBox( + width: 20, + ), + Expanded( + child: LinearProgressIndicator( value: progressValue, - strokeWidth: 2, ), - const SizedBox( - width: 20, - ), - Expanded( - child: LinearProgressIndicator( - value: progressValue, - )) - ], - ); - }); + ), + ], + ); + }, + ); } } diff --git a/lib/presentation/screens/screens.dart b/lib/presentation/screens/screens.dart index 991f784..1af145d 100644 --- a/lib/presentation/screens/screens.dart +++ b/lib/presentation/screens/screens.dart @@ -1,11 +1,11 @@ -export 'package:widgets_app/presentation/screens/theme_changer/theme_changer.dart'; -export 'package:widgets_app/presentation/screens/counter/counter_screen.dart'; export 'package:widgets_app/presentation/screens/animated/animated_screen.dart'; export 'package:widgets_app/presentation/screens/app_tutorial/app_tutorial_screen.dart'; export 'package:widgets_app/presentation/screens/buttons/buttons_screen.dart'; export 'package:widgets_app/presentation/screens/cards/cards_screen.dart'; +export 'package:widgets_app/presentation/screens/counter/counter_screen.dart'; export 'package:widgets_app/presentation/screens/home/home_screen.dart'; export 'package:widgets_app/presentation/screens/infinite_scroll/infinite_scroll_screen.dart'; export 'package:widgets_app/presentation/screens/progress/progress_screen.dart'; export 'package:widgets_app/presentation/screens/snackbar/snackbar_screen.dart'; +export 'package:widgets_app/presentation/screens/theme_changer/theme_changer.dart'; export 'package:widgets_app/presentation/screens/ui_controls/ui_controls_screen.dart'; diff --git a/lib/presentation/screens/snackbar/snackbar_screen.dart b/lib/presentation/screens/snackbar/snackbar_screen.dart index 6d6bdf1..a47ed78 100644 --- a/lib/presentation/screens/snackbar/snackbar_screen.dart +++ b/lib/presentation/screens/snackbar/snackbar_screen.dart @@ -1,10 +1,12 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import '../../../config/localisation/localizations.dart'; -import '../../../models/locale_model.dart'; +import 'package:widgets_app/config/localisation/localizations.dart'; +import 'package:widgets_app/models/locale_model.dart'; class SnackbarScreen extends StatelessWidget { + + const SnackbarScreen({super.key}); static const route = 'snackbar_screen'; void showCustomSnackbar(BuildContext context) { ScaffoldMessenger.of(context).clearSnackBars(); @@ -21,7 +23,7 @@ class SnackbarScreen extends StatelessWidget { } void openDialog(BuildContext context) { - LocaleModel st = AppLocalizations.of(context)!.value(); + final LocaleModel st = AppLocalizations.of(context)!.value(); showDialog( barrierDismissible: false, context: context, @@ -40,20 +42,18 @@ class SnackbarScreen extends StatelessWidget { context.pop(); }, child: Text(st.confirm), - ) + ), ], ), ); } - const SnackbarScreen({super.key}); - @override Widget build(BuildContext context) { /// /// Class File with localised text /// - LocaleModel st = AppLocalizations.of(context)!.value(); + final LocaleModel st = AppLocalizations.of(context)!.value(); return Scaffold( appBar: AppBar( title: Text(st.snackbarsDialogs), diff --git a/lib/presentation/screens/theme_changer/theme_changer.dart b/lib/presentation/screens/theme_changer/theme_changer.dart index e367812..78f5d00 100644 --- a/lib/presentation/screens/theme_changer/theme_changer.dart +++ b/lib/presentation/screens/theme_changer/theme_changer.dart @@ -4,12 +4,12 @@ import 'package:widgets_app/config/localisation/localizations.dart'; import 'package:widgets_app/presentation/providers/theme_provider.dart'; class ThemeChanger extends ConsumerWidget { - static const route = 'theme_changer'; const ThemeChanger({super.key}); + static const route = 'theme_changer'; @override - Widget build(BuildContext context, ref) { + Widget build(BuildContext context, WidgetRef ref) { final modeDark = ref.watch(themeNotifierProvider).isDarkMode; return Scaffold( appBar: AppBar( @@ -20,10 +20,10 @@ class ThemeChanger extends ConsumerWidget { onPressed: () { ref.read(themeNotifierProvider.notifier).toggleDarkMode(); }, - ) + ), ], ), - body: const _ThemeChangerView()); + body: const _ThemeChangerView(),); } } @@ -31,7 +31,7 @@ class _ThemeChangerView extends ConsumerWidget { const _ThemeChangerView(); @override - Widget build(BuildContext context, ref) { + Widget build(BuildContext context, WidgetRef ref) { final List colors = ref.watch(colorListProvider); final int selectedColor = ref.watch(themeNotifierProvider).selectedColor; diff --git a/lib/presentation/screens/ui_controls/ui_controls_screen.dart b/lib/presentation/screens/ui_controls/ui_controls_screen.dart index cac36ad..3a80dcc 100644 --- a/lib/presentation/screens/ui_controls/ui_controls_screen.dart +++ b/lib/presentation/screens/ui_controls/ui_controls_screen.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; -import '../../../config/localisation/localizations.dart'; -import '../../../models/locale_model.dart'; +import 'package:widgets_app/config/localisation/localizations.dart'; +import 'package:widgets_app/models/locale_model.dart'; class UiControlsScreen extends StatelessWidget { - static const route = 'ui_controls_screen'; const UiControlsScreen({super.key}); + static const route = 'ui_controls_screen'; @override Widget build(BuildContext context) { @@ -39,7 +39,7 @@ class _UIControlsViewState extends State { /// /// Class File with localised text /// - LocaleModel st = AppLocalizations.of(context)!.value(); + final LocaleModel st = AppLocalizations.of(context)!.value(); return ListView( physics: const ClampingScrollPhysics(), children: [ @@ -101,7 +101,7 @@ class _UIControlsViewState extends State { ], ), CheckboxListTile( - title: Text("${st.breakfast}?"), + title: Text('${st.breakfast}?'), value: wantsBreakfast, onChanged: (value) { wantsBreakfast = !wantsBreakfast; @@ -109,7 +109,7 @@ class _UIControlsViewState extends State { }, ), CheckboxListTile( - title: Text("${st.lunch}?"), + title: Text('${st.lunch}?'), value: wantsLunch, onChanged: (value) { wantsLunch = !wantsLunch; @@ -117,13 +117,13 @@ class _UIControlsViewState extends State { }, ), CheckboxListTile( - title: Text("${st.dinner}?"), + title: Text('${st.dinner}?'), value: wantsDinner, onChanged: (value) { wantsDinner = !wantsDinner; setState(() {}); }, - ) + ), ], ); } diff --git a/lib/presentation/widgets/side_menu.dart b/lib/presentation/widgets/side_menu.dart index 087caa8..1631ec3 100644 --- a/lib/presentation/widgets/side_menu.dart +++ b/lib/presentation/widgets/side_menu.dart @@ -12,9 +12,9 @@ class SideMenu extends ConsumerWidget { final GlobalKey scaffoldKey; final ValueNotifier navDrawerIndex = ValueNotifier(0); @override - Widget build(BuildContext context, ref) { + Widget build(BuildContext context, WidgetRef ref) { final LanguageEntity locale = ref.watch(localeProvider) ?? - const LanguageEntity(code: "en", value: "IN", text: "Emglish"); + const LanguageEntity(code: 'en', value: 'IN', text: 'Emglish'); return ValueListenableBuilder( valueListenable: navDrawerIndex, builder: (BuildContext context, int value, Widget? child) { @@ -57,7 +57,7 @@ class SideMenu extends ConsumerWidget { underline: const SizedBox(), padding: const EdgeInsets.symmetric(horizontal: 35), hint: Text( - locale.text ?? "Select Language", + locale.text ?? 'Select Language', style: const TextStyle( color: Colors.black, ), @@ -67,9 +67,9 @@ class SideMenu extends ConsumerWidget { DropdownMenuItem( value: Languages.languages[i], child: Text( - Languages.languages[i].text ?? "", + Languages.languages[i].text ?? '', ), - ) + ), ], onChanged: (value) { if (value != null) { diff --git a/pubspec.lock b/pubspec.lock index 71fd3a3..510acb3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -45,10 +45,10 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.17.2" fake_async: dependency: transitive description: @@ -62,14 +62,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c - url: "https://pub.dev" - source: hosted - version: "2.0.1" flutter_localizations: dependency: "direct main" description: flutter @@ -79,10 +71,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: b83ac5827baadefd331ea1d85110f34645827ea234ccabf53a655f41901a9bf4 + sha256: b04d4e9435a563673746ccb328d22018c6c9496bb547e11dd56c1b0cc9829fe5 url: "https://pub.dev" source: hosted - version: "2.3.6" + version: "2.3.10" flutter_test: dependency: "direct dev" description: flutter @@ -97,58 +89,42 @@ packages: dependency: "direct main" description: name: go_router - sha256: "00d1b67d6e9fa443331da229084dd3eb04407f5a2dff22940bd7bba6af5722c3" + sha256: "2aa884667eeda3a1c461f31e72af1f77984ab0f29450d8fb12ec1f7bc53eea14" url: "https://pub.dev" source: hosted - version: "7.1.1" + version: "10.1.0" intl: dependency: transitive description: name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 - url: "https://pub.dev" - source: hosted - version: "0.18.0" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "0.6.7" - lints: - dependency: transitive - description: - name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" - url: "https://pub.dev" - source: hosted - version: "2.0.1" + version: "0.18.1" logging: dependency: transitive description: name: logging - sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" matcher: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: @@ -169,10 +145,10 @@ packages: dependency: transitive description: name: riverpod - sha256: "80e48bebc83010d5e67a11c9514af6b44bbac1ec77b4333c8ea65dbc79e2d8ef" + sha256: "6c0a2c30c04206ac05494bcccd8148b76866e1a9248a5a8c84ca7b16fbcb3f6a" url: "https://pub.dev" source: hosted - version: "2.3.6" + version: "2.3.10" sky_engine: dependency: transitive description: flutter @@ -182,10 +158,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: @@ -198,10 +174,10 @@ packages: dependency: transitive description: name: state_notifier - sha256: "8fe42610f179b843b12371e40db58c9444f8757f8b69d181c97e50787caed289" + sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb url: "https://pub.dev" source: hosted - version: "0.7.2+1" + version: "1.0.0" stream_channel: dependency: transitive description: @@ -230,10 +206,10 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.6.0" vector_math: dependency: transitive description: @@ -242,6 +218,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" sdks: - dart: ">=3.0.0 <4.0.0" - flutter: ">=3.3.0" + dart: ">=3.1.0-185.0.dev <4.0.0" + flutter: ">=3.7.0" diff --git a/pubspec.yaml b/pubspec.yaml index 0c7ab18..ec7edc6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,16 +7,16 @@ environment: sdk: ">=3.0.0 <4.0.0" dependencies: - flutter_localizations: - sdk: flutter animate_do: ^3.0.2 flutter: sdk: flutter - flutter_riverpod: ^2.3.6 - go_router: ^7.1.1 + flutter_localizations: + sdk: flutter + flutter_riverpod: ^2.3.10 + go_router: ^10.1.0 dev_dependencies: - flutter_lints: ^2.0.1 + # flutter_lints: ^2.0.2 flutter_test: sdk: flutter