From 632e77cff4435e754081d567dd37122fd7076bdf Mon Sep 17 00:00:00 2001 From: Milind Mevada Date: Mon, 30 Mar 2020 15:42:00 +0530 Subject: [PATCH] Upgraded all dependencies & added link package for linters. --- analysis_options.yaml | 29 +------------- android/app/build.gradle | 4 +- .../app/src/development/google-services.json | 0 .../development/GoogleService-Info.plist | 0 lib/config.dart | 12 +++--- .../analytics/firebase_analytics_logger.dart | 6 +-- lib/src/app.dart | 40 ++++++++++--------- lib/src/app_update/app_update.dart | 32 +++++++-------- lib/src/error_logger/error_logger.dart | 4 +- lib/src/error_logger/sentry_error_logger.dart | 2 +- .../remote_config_repository.dart | 2 +- pubspec.yaml | 34 ++++++++-------- 12 files changed, 71 insertions(+), 94 deletions(-) create mode 100644 android/app/src/development/google-services.json create mode 100644 ios/config/development/GoogleService-Info.plist diff --git a/analysis_options.yaml b/analysis_options.yaml index 1ee3503..8ef36a3 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,30 +1,5 @@ -include: package:pedantic/analysis_options.yaml +include: package:lint/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 + - lib/**.g.dart \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index 8cb42da..b426ef1 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -79,8 +79,8 @@ flutter { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.1.1' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + androidTestImplementation 'androidx.test:runner:1.2.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } apply plugin: 'io.fabric' diff --git a/android/app/src/development/google-services.json b/android/app/src/development/google-services.json new file mode 100644 index 0000000..e69de29 diff --git a/ios/config/development/GoogleService-Info.plist b/ios/config/development/GoogleService-Info.plist new file mode 100644 index 0000000..e69de29 diff --git a/lib/config.dart b/lib/config.dart index e94273a..abee229 100644 --- a/lib/config.dart +++ b/lib/config.dart @@ -18,9 +18,9 @@ class Production implements Flavor { } enum AppMode { - DEBUG, - RELEASE, - PROFILE, + debug, + release, + profile, } class Config { @@ -36,11 +36,11 @@ class Config { assert(isDebug = true); if (isDebug) { - _mode = AppMode.DEBUG; + _mode = AppMode.debug; } else if (const bool.fromEnvironment("dart.vm.product")) { - _mode = AppMode.RELEASE; + _mode = AppMode.release; } else { - _mode = AppMode.PROFILE; + _mode = AppMode.profile; } return _mode; diff --git a/lib/src/analytics/firebase_analytics_logger.dart b/lib/src/analytics/firebase_analytics_logger.dart index 5c1619d..65be408 100644 --- a/lib/src/analytics/firebase_analytics_logger.dart +++ b/lib/src/analytics/firebase_analytics_logger.dart @@ -25,11 +25,11 @@ class FirebaseAnalyticsLogger implements AnalyticsLogger { @override void loginUser({Map userData}) { _client.logLogin(); - _client.setUserId(userData['id']); - _client.setUserProperty(name: 'email', value: userData['email']); + _client.setUserId(userData['id'] as String); + _client.setUserProperty(name: 'email', value: userData['email'] as String); _client.setUserProperty( name: 'name', - value: userData['name'], + value: userData['name'] as String, ); } diff --git a/lib/src/app.dart b/lib/src/app.dart index 92c5b29..47ea809 100644 --- a/lib/src/app.dart +++ b/lib/src/app.dart @@ -5,8 +5,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:firebase_performance/firebase_performance.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_base_project/src/analytics/analytics.dart'; import 'package:flutter_base_project/config.dart'; +import 'package:flutter_base_project/src/analytics/analytics.dart'; import 'package:flutter_base_project/src/app_update/app_update.dart'; import 'package:flutter_base_project/src/error_logger/error_logger.dart'; import 'package:flutter_base_project/src/remote_config/remote_config_repository.dart'; @@ -22,7 +22,7 @@ Future initApp() async { FlutterError.onError = Crashlytics.instance.recordFlutterError; final shouldEnablePerformanceMonitoring = - Config.appFlavor is Production && Config.appMode == AppMode.RELEASE; + Config.appFlavor is Production && Config.appMode == AppMode.release; await FirebasePerformance.instance .setPerformanceCollectionEnabled(shouldEnablePerformanceMonitoring); @@ -30,15 +30,24 @@ Future initApp() async { await RemoteConfigRepository().initConfig(); await RemoteConfigRepository().syncConfig(); } catch (e) { - debugPrint(e); + debugPrint(e.toString()); } - await runZoned>( + await runZoned>( () async { - runApp(EasyLocalization(child: App())); + runApp( + EasyLocalization( + path: 'lib/assets/strings', + supportedLocales: const [ + Locale('en', 'US'), + ], + useOnlyLangCode: false, + child: App(), + ), + ); }, - onError: (error, stackTrace) async { - if (Config.appMode == AppMode.RELEASE) { + onError: (error, StackTrace stackTrace) async { + if (Config.appMode == AppMode.release) { await Crashlytics.instance.recordError(error, stackTrace); await getErrorLogger().logEvent( exception: error, @@ -57,7 +66,6 @@ class App extends StatefulWidget { class _AppState extends State { @override Widget build(BuildContext context) { - final data = EasyLocalizationProvider.of(context).data; return MaterialApp( debugShowCheckedModeBanner: false, //TODO Change App Title @@ -65,14 +73,10 @@ class _AppState extends State { localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, - EasylocaLizationDelegate( - locale: data.locale ?? Locale('en', 'US'), - path: 'lib/assets/strings', - ), - ], - supportedLocales: [ - Locale('en', 'US'), + EasyLocalization.of(context).delegate, ], + locale: EasyLocalization.of(context).locale, + supportedLocales: EasyLocalization.of(context).supportedLocales, navigatorObservers: [ navigationObserverAnalytics(), ], @@ -86,15 +90,14 @@ class _AppState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Text( - AppLocalizations.of(context).tr('welcome_message'), + 'welcome_message'.tr() as String, ), Text( RemoteConfigRepository().getString('welcome_msg'), ), RaisedButton( - child: Text('Action'), onPressed: () async { - final url = 'https://jsonplaceholder.typicode.com/photos'; + const url = 'https://jsonplaceholder.typicode.com/photos'; final client = HttpClientWithInterceptor.build( interceptors: [ HttpPerformanceInterceptor(), @@ -108,6 +111,7 @@ class _AppState extends State { await dio.get(url); debugPrint("DIO RESPONSE"); }, + child: const Text('Action'), ), AppUpdateWidget(), ], diff --git a/lib/src/app_update/app_update.dart b/lib/src/app_update/app_update.dart index 7c504d8..2e2ab04 100644 --- a/lib/src/app_update/app_update.dart +++ b/lib/src/app_update/app_update.dart @@ -10,7 +10,7 @@ import 'package:flutter_base_project/src/remote_config/remote_config_repository. import 'package:package_info/package_info.dart'; import 'package:url_launcher/url_launcher.dart'; -enum UpdateMode { NoUpdate, FlexibleUpdate, ImmediateUpdate } +enum UpdateMode { noUpdate, flexibleUpdate, immediateUpdate } class AppUpdateWidget extends StatefulWidget { @override @@ -35,36 +35,34 @@ Future promptAppUpdate(BuildContext context) async { remoteConfigRepository: RemoteConfigRepository(), ); - if (update == UpdateMode.NoUpdate) { - return null; + if (update == UpdateMode.noUpdate) { + return; } - if (update == UpdateMode.FlexibleUpdate) { + if (update == UpdateMode.flexibleUpdate) { Scaffold.of(context).showSnackBar( SnackBar( - content: Text(AppLocalizations.of(context).tr('flexible_update_msg')), + content: Text('flexible_update_msg'.tr() as String), action: SnackBarAction( - label: AppLocalizations.of(context).tr('btn_update'), + label: 'btn_update'.tr() as String, onPressed: () => openStore(), ), ), ); } - if (update == UpdateMode.ImmediateUpdate) { + if (update == UpdateMode.immediateUpdate) { return showDialog( context: context, barrierDismissible: false, builder: (context) { return AlertDialog( - title: - Text(AppLocalizations.of(context).tr('title_immediate_update')), - content: - Text(AppLocalizations.of(context).tr('content_immediate_update')), + title: Text('title_immediate_update'.tr() as String), + content: Text('content_immediate_update'.tr() as String), actions: [ FlatButton( - child: Text(AppLocalizations.of(context).tr('btn_update')), onPressed: () => openStore(), + child: Text('btn_update'.tr() as String), ) ], ); @@ -80,25 +78,25 @@ Future checkAppUpdate({ final currentVersion = int.parse(await getCurrentAppVersion()); final latestStableVersion = int.parse( - await remoteConfigRepository.getString( + remoteConfigRepository.getString( keyProvider.keyLatestStableVersion, ), ); final latestVersion = int.parse( - await remoteConfigRepository.getString( + remoteConfigRepository.getString( keyProvider.keyLatestVersion, ), ); if (currentVersion >= latestVersion) { - return UpdateMode.NoUpdate; + return UpdateMode.noUpdate; } if (currentVersion < latestStableVersion) { - return UpdateMode.ImmediateUpdate; + return UpdateMode.immediateUpdate; } - return UpdateMode.FlexibleUpdate; + return UpdateMode.flexibleUpdate; } Future getCurrentAppVersion() async { diff --git a/lib/src/error_logger/error_logger.dart b/lib/src/error_logger/error_logger.dart index 82688e2..386c10d 100644 --- a/lib/src/error_logger/error_logger.dart +++ b/lib/src/error_logger/error_logger.dart @@ -10,7 +10,7 @@ abstract class ErrorLogger { }); } -Future> tags() async { +Future> tags() async { final info = await PackageInfo.fromPlatform(); return { "platform": defaultTargetPlatform.toString(), @@ -22,7 +22,7 @@ Future> tags() async { Future> extras() async { final deviceInfo = DeviceInfoPlugin(); - final extras = {}; + final Map extras = {}; if (defaultTargetPlatform == TargetPlatform.android) { final info = await deviceInfo.androidInfo; extras['device_info'] = { diff --git a/lib/src/error_logger/sentry_error_logger.dart b/lib/src/error_logger/sentry_error_logger.dart index 491c1bd..811a935 100644 --- a/lib/src/error_logger/sentry_error_logger.dart +++ b/lib/src/error_logger/sentry_error_logger.dart @@ -23,7 +23,7 @@ class SentryErrorLogger implements ErrorLogger { } @override - Future logEvent({exception, StackTrace stackTrace}) async { + Future logEvent({dynamic exception, StackTrace stackTrace}) async { final extraData = await extras(); final tagsData = await tags(); return _client.capture( diff --git a/lib/src/remote_config/remote_config_repository.dart b/lib/src/remote_config/remote_config_repository.dart index 53cf0b7..1d57022 100644 --- a/lib/src/remote_config/remote_config_repository.dart +++ b/lib/src/remote_config/remote_config_repository.dart @@ -18,7 +18,7 @@ class RemoteConfigRepository { Future syncConfig() async { try { - await _config.fetch(expiration: Duration(hours: 3)); + await _config.fetch(expiration: const Duration(hours: 3)); await _config.activateFetched(); } catch (err) { if (_config.lastFetchStatus == LastFetchStatus.noFetchYet) { diff --git a/pubspec.yaml b/pubspec.yaml index fb10861..9717084 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,39 +12,39 @@ dependencies: flutter_localizations: sdk: flutter - cupertino_icons: ^0.1.2 + cupertino_icons: ^0.1.3 - easy_localization: ^1.3.1 + easy_localization: ^2.0.2 - device_info: ^0.4.1+4 + device_info: ^0.4.2+1 - package_info: ^0.4.0+13 + package_info: ^0.4.0+16 - sentry: ^3.0.0+1 + sentry: ^3.0.1 - url_launcher: ^5.4.1 + url_launcher: ^5.4.2 #Firebase - firebase_crashlytics: ^0.1.2+4 - firebase_analytics: ^5.0.9 - firebase_performance: ^0.3.1+5 - firebase_remote_config: ^0.3.0+1 + firebase_crashlytics: ^0.1.3+3 + firebase_analytics: ^5.0.11 + firebase_performance: ^0.3.1+8 + firebase_remote_config: ^0.3.0+3 performance_interceptor: git: - url: git@github.com:solutelabs/firebase_performance_interceptor.git + url: https://github.com/solutelabs/firebase_performance_interceptor.git - connectivity: ^0.4.6+1 - shared_preferences: ^0.5.6 - permission_handler: ^4.0.0 + connectivity: ^0.4.8+2 + shared_preferences: ^0.5.6+3 + permission_handler: ^5.0.0+hotfix.1 cached_network_image: ^2.0.0 - path_provider: ^1.5.1 - provider: ^4.0.1 + path_provider: ^1.6.5 + provider: ^4.0.4 dev_dependencies: flutter_test: sdk: flutter - pedantic: ^1.4.0 + lint: ^1.1.1 flutter: