From 979cf19e1815a12574443128b8cdd1b690db0f37 Mon Sep 17 00:00:00 2001 From: Utpal Barman Date: Tue, 22 Oct 2024 17:39:37 +0600 Subject: [PATCH 1/2] refactoring: Class modifier changed and used flutter gen for fonts --- lib/main_common.dart | 2 ++ .../common/assets_cache_manager.dart | 21 +++++++++++++++++++ .../resources/app_color_palette.dart | 2 +- lib/presentation/resources/app_fonts.dart | 6 ++++-- lib/presentation/resources/app_icons.dart | 7 ------- .../resources/app_text_styles.dart | 3 +-- lib/presentation/resources/app_theme.dart | 2 +- .../resources/app_ui_constants.dart | 2 +- lib/presentation/resources/resources.dart | 1 - 9 files changed, 31 insertions(+), 15 deletions(-) create mode 100644 lib/presentation/common/assets_cache_manager.dart delete mode 100644 lib/presentation/resources/app_icons.dart diff --git a/lib/main_common.dart b/lib/main_common.dart index 5ede696..7e808d4 100644 --- a/lib/main_common.dart +++ b/lib/main_common.dart @@ -2,10 +2,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_template/injection/dependencies.dart'; import 'package:flutter_template/presentation/app.dart'; import 'package:flutter_template/presentation/app_flavor.dart'; +import 'package:flutter_template/presentation/common/assets_cache_manager.dart'; // ignore: avoid_void_async void mainCommon(AppFlavor flavor) async { WidgetsFlutterBinding.ensureInitialized(); await DependencyManager.inject(flavor); + await AssetsCachingManager.cacheAnimationsRoot(); runApp(const App()); } diff --git a/lib/presentation/common/assets_cache_manager.dart b/lib/presentation/common/assets_cache_manager.dart new file mode 100644 index 0000000..d463d59 --- /dev/null +++ b/lib/presentation/common/assets_cache_manager.dart @@ -0,0 +1,21 @@ +abstract interface class AssetsCachingManager { + /// Caches only the animations required at the initial app startup, + /// specifically for the splash screen. + /// + /// This method should be called before [runApp] to ensure that essential + /// animations are loaded early, improving the user experience during + /// the app's launch phase. + /// + /// By caching only necessary animations, this method reduces memory usage + /// and improves performance. + /// + /// Typically invoked during app initialization to enhance startup efficiency. + static Future cacheAnimationsRoot() async { + // Example: + // try { + // await AssetLottie(Assets.animations.splash.path).load(); + // } catch (e) { + // // Nothing to do + // } + } +} diff --git a/lib/presentation/resources/app_color_palette.dart b/lib/presentation/resources/app_color_palette.dart index d988326..ab60fe7 100644 --- a/lib/presentation/resources/app_color_palette.dart +++ b/lib/presentation/resources/app_color_palette.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; /// Defines color palette for the application. /// /// Consider using the color name that is mentioned in Figma. -sealed class AppColorPalette { +abstract interface class AppColorPalette { const AppColorPalette._(); static const alpha = Colors.transparent; diff --git a/lib/presentation/resources/app_fonts.dart b/lib/presentation/resources/app_fonts.dart index eadeaee..7a76f05 100644 --- a/lib/presentation/resources/app_fonts.dart +++ b/lib/presentation/resources/app_fonts.dart @@ -1,7 +1,9 @@ -sealed class AppFonts { +import 'package:flutter_template/gen/fonts.gen.dart'; + +abstract interface class AppFonts { AppFonts._(); - static const roboto = 'Roboto'; + static const roboto = FontFamily.roboto; static String get activeFontFamily => roboto; } diff --git a/lib/presentation/resources/app_icons.dart b/lib/presentation/resources/app_icons.dart deleted file mode 100644 index ed8257c..0000000 --- a/lib/presentation/resources/app_icons.dart +++ /dev/null @@ -1,7 +0,0 @@ -class AppIcons { - AppIcons._private(); - - static const _iconsPath = 'assets/icons'; - - static const add = '$_iconsPath/add.svg'; -} diff --git a/lib/presentation/resources/app_text_styles.dart b/lib/presentation/resources/app_text_styles.dart index 2e0b0d6..6032b47 100644 --- a/lib/presentation/resources/app_text_styles.dart +++ b/lib/presentation/resources/app_text_styles.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_template/presentation/resources/app_colors.dart'; -import 'package:flutter_template/presentation/resources/app_fonts.dart'; +import 'package:flutter_template/presentation/resources/resources.dart'; import 'package:theme_tailor_annotation/theme_tailor_annotation.dart'; part 'app_text_styles.tailor.dart'; diff --git a/lib/presentation/resources/app_theme.dart b/lib/presentation/resources/app_theme.dart index 1cbc88b..501b177 100644 --- a/lib/presentation/resources/app_theme.dart +++ b/lib/presentation/resources/app_theme.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_template/presentation/extensions/color_extensions.dart'; import 'package:flutter_template/presentation/resources/resources.dart'; -sealed class AppTheme { +abstract interface class AppTheme { const AppTheme._(); static ThemeData fromBrightness(Brightness brightness) { diff --git a/lib/presentation/resources/app_ui_constants.dart b/lib/presentation/resources/app_ui_constants.dart index f1dbd8b..a6a4f4b 100644 --- a/lib/presentation/resources/app_ui_constants.dart +++ b/lib/presentation/resources/app_ui_constants.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; /// /// This class contains non-sensitive information and is designed to maintain consistency /// across the app's UI elements. -sealed class AppUiConstants { +abstract interface class AppUiConstants { AppUiConstants._(); // Animations diff --git a/lib/presentation/resources/resources.dart b/lib/presentation/resources/resources.dart index 41cc261..1e613a4 100644 --- a/lib/presentation/resources/resources.dart +++ b/lib/presentation/resources/resources.dart @@ -1,6 +1,5 @@ export 'package:flutter_template/presentation/resources/app_colors.dart'; export 'package:flutter_template/presentation/resources/app_fonts.dart'; -export 'package:flutter_template/presentation/resources/app_icons.dart'; export 'package:flutter_template/presentation/resources/app_images.dart'; export 'package:flutter_template/presentation/resources/app_text_styles.dart'; export 'package:flutter_template/presentation/resources/app_theme.dart'; From 4747dd839b3cab22aa7c1540eee5d0f2151cdfc7 Mon Sep 17 00:00:00 2001 From: Utpal Barman Date: Tue, 22 Oct 2024 17:40:21 +0600 Subject: [PATCH 2/2] refactor: Lottie package added and improved pubspec grouping --- assets/animations/audio_wave.json | 1 + ios/Runner/AppDelegate.swift | 2 +- lib/presentation/routes/router.dart | 2 +- pubspec.yaml | 95 +++++++++++++---------------- 4 files changed, 45 insertions(+), 55 deletions(-) create mode 100644 assets/animations/audio_wave.json diff --git a/assets/animations/audio_wave.json b/assets/animations/audio_wave.json new file mode 100644 index 0000000..c7ee5c7 --- /dev/null +++ b/assets/animations/audio_wave.json @@ -0,0 +1 @@ +{"nm":"コンポ 1","ddd":0,"h":600,"w":600,"meta":{"g":"@lottiefiles/toolkit-js 0.33.2"},"layers":[{"ty":4,"nm":"シェイプレイヤー 5","sr":1,"st":0,"op":150.000006109625,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[300,300,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"シェイプ 1","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"パス 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[226,-236],[226,242]]},"ix":2}},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"パスのトリミング 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.48,"y":0.04},"i":{"x":0.52,"y":0.96},"s":[80],"t":0},{"o":{"x":0.48,"y":0.04},"i":{"x":0.52,"y":0.96},"s":[70],"t":5},{"o":{"x":0.48,"y":0.04},"i":{"x":0.52,"y":0.96},"s":[90],"t":11},{"o":{"x":0.48,"y":0.04},"i":{"x":0.52,"y":0.96},"s":[60],"t":17},{"o":{"x":0.48,"y":0.04},"i":{"x":0.52,"y":0.96},"s":[85],"t":25},{"s":[80],"t":30.0000012219251}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.48,"y":0.04},"i":{"x":0.52,"y":0.96},"s":[20],"t":0},{"o":{"x":0.48,"y":0.04},"i":{"x":0.52,"y":0.96},"s":[30],"t":5},{"o":{"x":0.48,"y":0.04},"i":{"x":0.52,"y":0.96},"s":[10],"t":11},{"o":{"x":0.48,"y":0.04},"i":{"x":0.52,"y":0.96},"s":[40],"t":17},{"o":{"x":0.48,"y":0.04},"i":{"x":0.52,"y":0.96},"s":[15],"t":25},{"s":[20],"t":30.0000012219251}],"ix":1},"m":2},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"線 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":40,"ix":5},"c":{"a":0,"k":[0.2784,0.5922,1],"ix":3}},{"ty":"fl","bm":0,"hd":true,"mn":"ADBE Vector Graphic - Fill","nm":"塗り 1","c":{"a":0,"k":[1,0,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"シェイプレイヤー 4","sr":1,"st":0,"op":150.000006109625,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[300,300,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"シェイプ 1","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"パス 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[114,-236],[114,242]]},"ix":2}},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"パスのトリミング 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.42,"y":0},"i":{"x":0.58,"y":1},"s":[60],"t":0},{"o":{"x":0.42,"y":0},"i":{"x":0.58,"y":1},"s":[80],"t":7},{"o":{"x":0.42,"y":0},"i":{"x":0.58,"y":1},"s":[60],"t":14},{"o":{"x":0.42,"y":0},"i":{"x":0.58,"y":1},"s":[100],"t":22},{"s":[60],"t":30.0000012219251}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.42,"y":0},"i":{"x":0.58,"y":1},"s":[40],"t":0},{"o":{"x":0.42,"y":0},"i":{"x":0.58,"y":1},"s":[20],"t":7},{"o":{"x":0.42,"y":0},"i":{"x":0.58,"y":1},"s":[40],"t":14},{"o":{"x":0.42,"y":0},"i":{"x":0.58,"y":1},"s":[0],"t":22},{"s":[40],"t":30.0000012219251}],"ix":1},"m":2},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"線 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":40,"ix":5},"c":{"a":0,"k":[0.2784,0.5922,1],"ix":3}},{"ty":"fl","bm":0,"hd":true,"mn":"ADBE Vector Graphic - Fill","nm":"塗り 1","c":{"a":0,"k":[1,0,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"シェイプレイヤー 3","sr":1,"st":0,"op":150.000006109625,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[300,300,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"シェイプ 1","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"パス 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2,-236],[-2,242]]},"ix":2}},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"パスのトリミング 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.84,"y":0},"i":{"x":0.16,"y":1},"s":[90],"t":0},{"o":{"x":0.84,"y":0},"i":{"x":0.16,"y":1},"s":[65],"t":8},{"o":{"x":0.84,"y":0},"i":{"x":0.16,"y":1},"s":[75],"t":15},{"o":{"x":0.84,"y":0},"i":{"x":0.16,"y":1},"s":[60],"t":21},{"s":[90],"t":30.0000012219251}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.84,"y":0},"i":{"x":0.16,"y":1},"s":[10],"t":0},{"o":{"x":0.84,"y":0},"i":{"x":0.16,"y":1},"s":[35],"t":8},{"o":{"x":0.84,"y":0},"i":{"x":0.16,"y":1},"s":[25],"t":15},{"o":{"x":0.84,"y":0},"i":{"x":0.16,"y":1},"s":[40],"t":21},{"s":[10],"t":30.0000012219251}],"ix":1},"m":2},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"線 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":40,"ix":5},"c":{"a":0,"k":[0.2784,0.5922,1],"ix":3}},{"ty":"fl","bm":0,"hd":true,"mn":"ADBE Vector Graphic - Fill","nm":"塗り 1","c":{"a":0,"k":[1,0,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3},{"ty":4,"nm":"シェイプレイヤー 2","sr":1,"st":0,"op":150.000006109625,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[300,300,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"シェイプ 1","ix":1,"cix":2,"np":5,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"パス 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-114,-236],[-114,242]]},"ix":2}},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"パスのトリミング 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[60],"t":0},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[85],"t":8},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[70],"t":15},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[90],"t":22},{"s":[60],"t":30.0000012219251}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[40],"t":0},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[15],"t":8},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[30],"t":15},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[10],"t":22},{"s":[40],"t":30.0000012219251}],"ix":1},"m":2},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"線 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":40,"ix":5},"c":{"a":0,"k":[0.2784,0.5922,1],"ix":3}},{"ty":"fl","bm":0,"hd":true,"mn":"ADBE Vector Graphic - Fill","nm":"塗り 1","c":{"a":0,"k":[1,0,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"パス 2","ix":5,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[114,-236],[114,242]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":4},{"ty":4,"nm":"シェイプレイヤー 1","sr":1,"st":0,"op":150.000006109625,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[300,300,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"シェイプ 1","ix":1,"cix":2,"np":5,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"パス 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-226,-236],[-226,242]]},"ix":2}},{"ty":"tm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Trim","nm":"パスのトリミング 1","ix":2,"e":{"a":1,"k":[{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[80],"t":0},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[60],"t":8},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[90],"t":15},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[65],"t":22},{"s":[80],"t":30.0000012219251}],"ix":2},"o":{"a":0,"k":0,"ix":3},"s":{"a":1,"k":[{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[20],"t":0},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[40],"t":8},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[10],"t":15},{"o":{"x":0.4,"y":0.8},"i":{"x":0.74,"y":1},"s":[35],"t":22},{"s":[20],"t":30.0000012219251}],"ix":1},"m":2},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"線 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":40,"ix":5},"c":{"a":0,"k":[0.2784,0.5922,1],"ix":3}},{"ty":"fl","bm":0,"hd":true,"mn":"ADBE Vector Graphic - Fill","nm":"塗り 1","c":{"a":0,"k":[1,0,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"パス 2","ix":5,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[226,-236],[226,242]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":5}],"v":"5.2.1","fr":30,"op":30,"ip":0,"assets":[]} \ No newline at end of file diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 9074fee..6266644 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import Flutter import UIKit -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/lib/presentation/routes/router.dart b/lib/presentation/routes/router.dart index a040b5c..15a0e41 100644 --- a/lib/presentation/routes/router.dart +++ b/lib/presentation/routes/router.dart @@ -7,7 +7,7 @@ import 'package:flutter_template/presentation/routes/router.gr.dart'; /// for example, Bottom navigation child views, tab views, etc. /// @AutoRouterConfig() -class AppRouter extends $AppRouter { +class AppRouter extends RootStackRouter { @override RouteType get defaultRouteType => const RouteType.material(); diff --git a/pubspec.yaml b/pubspec.yaml index f2c35e2..686d546 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,20 +1,8 @@ name: flutter_template description: A new Flutter application. -# The following line prevents the package from being accidentally published to -# pub.dev using `pub publish`. This is preferred for private packages. -publish_to: "none" # Remove this line if you wish to publish to pub.dev - -# The following defines the version and build number for your application. -# A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. -# Both the version and the builder number may be overridden in flutter -# build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. -# Read more about Android versioning at https://developer.android.com/studio/publish/versioning -# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. -# Read more about iOS versioning at -# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +publish_to: "none" # Private package, prevent accidental publishing + version: 1.0.0+1 environment: @@ -24,70 +12,74 @@ dependencies: flutter: sdk: flutter + # UI & Design + cupertino_icons: ^1.0.8 + flutter_svg: 2.0.9 # Change with caution + lottie: 1.4.3 # Change with caution + flutter_sticky_header: ^0.7.0 + auto_size_text: ^3.0.0 + theme_tailor_annotation: ^3.0.1 + # Localization nstack: git: url: https://github.com/nstack-io/flutter-sdk.git ref: v0.5.1 - # UI - cupertino_icons: ^1.0.6 - flutter_svg: ^2.0.9 - flutter_sticky_header: ^0.6.5 - auto_size_text: ^3.0.0 - theme_tailor_annotation: ^3.0.1 + # Networking & API + dio: ^5.7.0 + retrofit: ^4.4.1 - # Data - dio: ^5.4.0 - freezed_annotation: ^2.4.1 - json_annotation: ^4.8.1 - retrofit: ^4.0.3 + # State Management, Dependency Injection, Navigation + get_it: ^8.0.1 + injectable: ^2.5.0 + flutter_bloc: ^8.1.6 + auto_route: ^9.2.2 - # Utility - device_info_plus: ^9.1.1 - package_info_plus: ^5.0.1 + # Data Modeling & Serialization + freezed_annotation: ^2.4.4 + json_annotation: ^4.9.0 - # Persistence - flutter_secure_storage: ^9.0.0 - shared_preferences: ^2.2.2 + # Device & App Info + device_info_plus: ^11.1.0 + package_info_plus: ^8.1.0 - # Architecture - get_it: ^7.6.6 - injectable: ^2.3.2 - auto_route: ^7.8.4 - flutter_bloc: ^8.1.3 + # Persistence & Storage + flutter_secure_storage: ^9.2.2 + shared_preferences: ^2.3.2 dev_dependencies: + # Testing flutter_test: sdk: flutter - build_runner: ^2.4.7 + # Code Generation + build_runner: ^2.4.13 + freezed: ^2.5.7 + json_serializable: ^6.8.0 theme_tailor: ^3.0.1 - freezed: ^2.4.6 - json_serializable: ^6.7.1 - injectable_generator: ^2.4.1 - auto_route_generator: ^7.3.2 - retrofit_generator: ^8.0.6 - monstarlab_lints: ^1.0.2 + auto_route_generator: ^9.0.0 + injectable_generator: ^2.6.2 + retrofit_generator: ^9.1.3 - # Simplified work with assets - flutter_gen_runner: ^5.4.0 + # Linting & Code Quality + monstarlab_lints: ^1.0.4 + + # Asset Management + flutter_gen_runner: ^5.8.0 flutter_gen: integrations: flutter_svg: true + lottie: true -# The following section is specific to Flutter. flutter: - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. uses-material-design: true - # To add assets to your application, add an assets section, like this: assets: - assets/icons/ - assets/images/ + - assets/animations/ fonts: - family: Roboto @@ -122,6 +114,3 @@ flutter: - asset: assets/fonts/Roboto-ThinItalic.ttf weight: 100 style: italic - - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages