diff --git a/README.md b/README.md index 600ae98..e4f724c 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,57 @@ -# flutter_base_project +# Flutter base Scaffold Project -Scaffold project with all basic setup. +This is a base flutter scaffold project that has all configuration & setup created. So we can reduce the efforts of basic project setup & project level boilerplate code. -## Getting Started +## Features + +### Flavors (Flutter + Native) +Production, Staging, Development (with abstract properties) +Modes: Debug, Release, Profile. + +### Localization +Localization support based on [Easy Localization](https://pub.dev/packages/easy_localization) + +### Custom Logger (Default Sentry) +Abstract layer for a custom logger. It has default implementation of [Sentry](https://sentry.io/welcome/). +It can again be replaced with any other services. + +### Firebase Crashalytics +Crashalytics that works in Release and Profile Mode. + +### Analytics (Default Firebase) +Abstract layer for a Custom event logging. It has default implementation of Firebase Analytics. It can again be replaced with any other services. + +### Firebase Performance Monitor +Firebase performance integration to check App freezing, network latency monitoring. (Integrated firebase_performance_interceptor) + +### Remote Config +Integration of firebase remote config. + +### Pedantic +Analysis_options setup for strict lint checks. + +### Flavor-wise installable build +Flavor wise application-id overridden. So that same application with different flavor can be installed simultaneously. + +### App Update Prompts (Flexible + Immediate) +Force upgrade setup based on Firebase Remote config. + +Currently it has two configuration +1. Latest App Version (Build Number) +2. Latest Stable App Version (Build Number) + +If latest app version is greater then current version it will trigger Flexible Update (Snackbar Promot.) + +If current app version is below latest stable version, then it will trigger a Immediate (Force) update. + +### Other Useful dependencies +- [Connectivity](https://pub.dev/packages/connectivity) +- [Shared Preferences](https://pub.dev/packages/shared_preferences) +- [Path Provider](https://pub.dev/packages/path_provider) +- [Provider](https://pub.dev/packages/provider) +- [Permission Handler](https://pub.dev/packages/permission_handler) +- [Cached Network Image](https://pub.dev/packages/cached_network_image) -This project is a starting point for a Flutter application. -A few resources to get you started if this is your first Flutter project: -- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) -For help getting started with Flutter, view our -[online documentation](https://flutter.dev/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..1ee3503 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,30 @@ +include: package:pedantic/analysis_options.yaml + +analyzer: + exclude: + - lib/**.g.dart + +linter: + rules: + - camel_case_types + - empty_constructor_bodies + - cancel_subscriptions + - close_sinks + - unnecessary_await_in_return + - unnecessary_new + - unnecessary_null_aware_assignments + - no_duplicate_case_values + - throw_in_finally + - avoid_print + - control_flow_in_finally + - unnecessary_statements + - always_declare_return_types + - always_put_control_body_on_new_line + - list_remove_unrelated_type + - avoid_renaming_method_parameters + - avoid_void_async + - empty_catches + - prefer_final_in_for_each + - prefer_is_not_empty + - prefer_is_empty + - unawaited_futures \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index 38fb3a1..8cb42da 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -53,6 +53,23 @@ android { signingConfig signingConfigs.debug } } + flavorDimensions "api" + productFlavors { + development { + dimension "api" + applicationIdSuffix ".development" + resValue "string", "app_name", "Flutter-Dev" + } + staging { + dimension "api" + applicationIdSuffix ".staging" + resValue "string", "app_name", "Flutter-Staging" + } + production { + dimension "api" + resValue "string", "app_name", "Flutter-Base" + } + } } flutter { @@ -65,3 +82,6 @@ dependencies { androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' } + +apply plugin: 'io.fabric' +apply plugin: 'com.google.gms.google-services' diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index db315c9..1d75c7d 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -7,18 +7,18 @@ FlutterApplication and put your custom class here. --> + android:icon="@mipmap/ic_launcher" + android:label="@string/app_name"> - - + +