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/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'; diff --git a/pubspec.yaml b/pubspec.yaml index 19d424b..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.8 - flutter_svg: ^2.0.9 # Change this with caution - flutter_sticky_header: ^0.7.0 - auto_size_text: ^3.0.0 - theme_tailor_annotation: ^3.0.1 - - # Data + # Networking & API dio: ^5.7.0 + retrofit: ^4.4.1 + + # State Management, Dependency Injection, Navigation + get_it: ^8.0.1 + injectable: ^2.5.0 + flutter_bloc: ^8.1.6 + auto_route: ^9.2.2 + + # Data Modeling & Serialization freezed_annotation: ^2.4.4 json_annotation: ^4.9.0 - retrofit: ^4.4.1 - # Utility - device_info_plus: 11.0.0 - package_info_plus: ^8.0.3 + # Device & App Info + device_info_plus: ^11.1.0 + package_info_plus: ^8.1.0 - # Persistence + # Persistence & Storage flutter_secure_storage: ^9.2.2 shared_preferences: ^2.3.2 - # Architecture - get_it: ^8.0.0 - injectable: ^2.5.0 - auto_route: ^9.2.2 - flutter_bloc: ^8.1.6 - dev_dependencies: + # Testing flutter_test: sdk: flutter + # Code Generation build_runner: ^2.4.13 - theme_tailor: ^3.0.1 freezed: ^2.5.7 json_serializable: ^6.8.0 - injectable_generator: ^2.6.2 + theme_tailor: ^3.0.1 auto_route_generator: ^9.0.0 + injectable_generator: ^2.6.2 retrofit_generator: ^9.1.3 + + # Linting & Code Quality monstarlab_lints: ^1.0.4 - # Simplified work with assets + # 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