diff --git a/lib/app.dart b/lib/app.dart index 8b4c93d..306b180 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -50,7 +50,7 @@ class _AppState extends State { super.didChangeDependencies(); postAppConfig(); if (!FlavorConfig.isProduction()) { - WidgetsBinding.instance?.addPostFrameCallback((_) { + WidgetsBinding.instance.addPostFrameCallback((_) { debugOverlay(context); }); } diff --git a/lib/config/flavor_config.dart b/lib/config/flavor_config.dart index 090d61a..5e33d49 100644 --- a/lib/config/flavor_config.dart +++ b/lib/config/flavor_config.dart @@ -1,6 +1,6 @@ import 'package:flutter_template/util/enum_util.dart'; -enum Flavor { MOCK, DEV, STAGING, PRODUCTION } +enum Flavor { DEV, STAGING, PRODUCTION } /// App specific flavor values. class FlavorValues { @@ -29,8 +29,6 @@ abstract class FlavorConfig { static bool isInitialized() => _flavor != null; //in tests it's not - static bool isMock() => _flavor! == Flavor.MOCK; - static bool isDev() => _flavor! == Flavor.DEV; static bool isStaging() => _flavor! == Flavor.STAGING; diff --git a/lib/config/pre_app_config.dart b/lib/config/pre_app_config.dart index 32def57..ccc8534 100644 --- a/lib/config/pre_app_config.dart +++ b/lib/config/pre_app_config.dart @@ -4,7 +4,6 @@ import 'package:flutter_template/config/logger_config.dart'; import 'package:flutter_template/di/service_locator.dart'; import 'package:flutter_template/di/service_locator.dart' as serviceLocatorConf; import 'package:flutter_template/feature/settings/preferences_helper.dart'; -import 'package:flutter_template/notifications/local/local_notification_manager.dart'; import 'package:flutter_template/user/user_manager.dart'; /// Configuration that needs to be done before the Flutter app starts goes here. diff --git a/lib/data/mock/mock_tasks_api_service.dart b/lib/data/mock/mock_tasks_api_service.dart deleted file mode 100644 index 31f171e..0000000 --- a/lib/data/mock/mock_tasks_api_service.dart +++ /dev/null @@ -1,71 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_template/model/task/api/create_task.dart'; -import 'package:flutter_template/model/task/api/create_task_group.dart'; -import 'package:flutter_template/model/task/task.dart'; -import 'package:flutter_template/model/task/task_group.dart'; -import 'package:flutter_template/network/tasks_api_service.dart'; - -import 'tasks_dummy_data.dart'; - -class MockTasksApiService implements TasksApiService { - @override - Future completeTask(String id) => - Future.delayed(Duration(milliseconds: 100)); - - @override - Future reopenTask(String id) => - Future.delayed(Duration(milliseconds: 100)); - - @override - Future createTask(CreateTask createTask) => Future.delayed( - Duration(seconds: 1), - () => Task( - id: DateTime.now().toString(), - title: createTask.title, - description: createTask.description, - status: createTask.taskStatus, - )); - - @override - Future createTaskGroup(CreateTaskGroup ctg) => - Future.value(TaskGroup( - DateTime.now().toString(), - ctg.name, - ctg.taskIds, - )); - - @override - Future deleteAllTaskGroups() => Future.value(); - - @override - Future deleteAllTasks() => Future.value(); - - @override - Future getTask(String taskId) { - throw UnimplementedError(); - } - - @override - Future getTaskGroup(String id) { - throw UnimplementedError(); - } - - @override - Future> getTaskGroups() async { - return DUMMY_TASK_GROUPS; - } - - @override - Future> getTasks(String taskGroupId) async { - final taskIdsFromGroup = DUMMY_TASK_GROUPS - .firstWhere((taskGroup) => taskGroup.id == taskGroupId) - .taskIds; - return DUMMY_TASKS - .where((task) => taskIdsFromGroup.contains(task.id)) - .toList(); - } - - @override - Future updateTaskGroup(TaskGroup taskGroup) => - Future.value(taskGroup); -} diff --git a/lib/data/mock/mock_user_api_service.dart b/lib/data/mock/mock_user_api_service.dart deleted file mode 100644 index a4257a0..0000000 --- a/lib/data/mock/mock_user_api_service.dart +++ /dev/null @@ -1,46 +0,0 @@ -import 'package:flutter_template/model/user/credentials.dart'; -import 'package:flutter_template/model/user/refresh_token.dart'; -import 'package:flutter_template/model/user/user.dart'; -import 'package:flutter_template/network/user_api_service.dart'; - -const String mockToken = - 'eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkphdmFJb' - 'lVzZSIsImV4cCI6MTcxNDIyMDYwMSwiaWF0IjoxNjE5NTI2MjAxfQ.yjTgXqiqGH3F-ycq' - '2I3Ec-v3l0mzVV8Rg_RijsR50do'; - -class MockUserApiService implements UserApiService { - Future signUp(User user) => Future.delayed(Duration(seconds: 2)); - - Future login(String username, String password) => Future.delayed( - Duration(seconds: 2), - () => Credentials( - mockToken, - RefreshToken( - mockToken, - DateTime.now() - .add(Duration(days: 1500)) - .millisecondsSinceEpoch))); - - @override - Future getUserProfile({String? authHeader}) => Future.value(User( - id: "1", - email: "user@email.com", - firstName: "First", - lastName: "Last", - dateOfBirth: DateTime.now())); - - @override - Future addNotificationsToken(String token) => Future.value(); - - @override - Future deactivate() => Future.value(); - - @override - Future logout() => Future.value(); - - @override - Future resetPassword(String email) => Future.value(); - - @override - Future updateUserProfile(User user) => Future.value(user); -} diff --git a/lib/data/mock/tasks_dummy_data.dart b/lib/data/mock/tasks_dummy_data.dart deleted file mode 100644 index 70f02e7..0000000 --- a/lib/data/mock/tasks_dummy_data.dart +++ /dev/null @@ -1,22 +0,0 @@ -import 'package:flutter_template/model/task/task.dart'; -import 'package:flutter_template/model/task/task_group.dart'; -import 'package:flutter_template/model/task/task_status.dart'; - -const List DUMMY_TASK_GROUPS = [ - TaskGroup('tg-1', 'Home', ['t1', 't2', 't3', 't4']), - TaskGroup('tg-2', 'Work', ['t5', 't6', 't7']), - TaskGroup('tg-3', 'Other', ['t8', 't9', 't10']) -]; - -const List DUMMY_TASKS = [ - Task(id: 't1', title: 'Clean kitchen', status: DONE), - Task(id: 't2', title: 'Plant flower', description: 'Any', status: NOT_DONE), - Task(id: 't3', title: 'Buy milk', status: NOT_DONE), - Task(id: 't4', title: 'Fix cupboard door', status: NOT_DONE), - Task(id: 't5', title: 'Pretend to work', status: DONE), - Task(id: 't6', title: 'Vacation', description: '2 weeks', status: DONE), - Task(id: 't7', title: 'Pretend to work again', status: NOT_DONE), - Task(id: 't8', title: 'Refuel car', status: DONE), - Task(id: 't9', title: 'Visit dentist', status: NOT_DONE), - Task(id: 't10', title: 'Pickup mail', status: DONE) -]; diff --git a/lib/data/repository/tasks/tasks_data_source.dart b/lib/data/repository/tasks/tasks_data_source.dart index 5164150..0663418 100644 --- a/lib/data/repository/tasks/tasks_data_source.dart +++ b/lib/data/repository/tasks/tasks_data_source.dart @@ -1,4 +1,3 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter_template/model/task/task.dart'; import 'package:flutter_template/model/task/task_group.dart'; diff --git a/lib/data/repository/tasks/tasks_repository.dart b/lib/data/repository/tasks/tasks_repository.dart index f704c6d..464eb6c 100644 --- a/lib/data/repository/tasks/tasks_repository.dart +++ b/lib/data/repository/tasks/tasks_repository.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:flutter/material.dart'; import 'package:flutter_template/data/repository/tasks/tasks_data_source.dart'; import 'package:flutter_template/feature/home/task_list/bloc/task_list_state.dart'; import 'package:flutter_template/log/log.dart'; diff --git a/lib/di/service_locator.dart b/lib/di/service_locator.dart index 51f9c12..6897e31 100755 --- a/lib/di/service_locator.dart +++ b/lib/di/service_locator.dart @@ -2,8 +2,6 @@ import 'package:connectivity/connectivity.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:flutter_template/config/firebase_config.dart'; import 'package:flutter_template/config/flavor_config.dart'; -import 'package:flutter_template/data/mock/mock_tasks_api_service.dart'; -import 'package:flutter_template/data/mock/mock_user_api_service.dart'; import 'package:flutter_template/di/user_scope_hook.dart'; import 'package:flutter_template/feature/settings/preferences_helper.dart'; import 'package:flutter_template/model/user/user_credentials.dart'; @@ -69,11 +67,6 @@ Future setupGlobalDependencies() async { final UserAuthApiService userAuthApi = apiProvider.getUserAuthApiService(); TasksApiService tasksApi = apiProvider.getTasksApiService(); - if (FlavorConfig.isMock()) { - userApi = MockUserApiService(); - tasksApi = MockTasksApiService(); - } - // Notifications //// DataNotificationManager diff --git a/lib/feature/auth/login/ui/login_page.dart b/lib/feature/auth/login/ui/login_page.dart index ba0a1da..ad75b89 100644 --- a/lib/feature/auth/login/ui/login_page.dart +++ b/lib/feature/auth/login/ui/login_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_template/di/service_locator.dart'; import 'package:flutter_template/feature/auth/login/bloc/login_cubit.dart'; diff --git a/lib/feature/auth/login/ui/login_view.dart b/lib/feature/auth/login/ui/login_view.dart index 154f565..4e8fb4f 100644 --- a/lib/feature/auth/login/ui/login_view.dart +++ b/lib/feature/auth/login/ui/login_view.dart @@ -1,11 +1,9 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_template/feature/auth/login/bloc/login_cubit.dart'; import 'package:flutter_template/feature/auth/router/auth_router_delegate.dart'; import 'package:flutter_template/resources/localization/localization_notifier.dart'; -import 'package:provider/provider.dart'; class LoginView extends StatelessWidget { final bool sessionExpiredRedirect; @@ -80,8 +78,8 @@ class LoginView extends StatelessWidget { child: Text('Sign up'), onPressed: () => _onSignUpPressed(context), style: ElevatedButton.styleFrom( - onPrimary: Colors.black, - primary: Colors.grey[300], + foregroundColor: Colors.grey[300], + disabledForegroundColor: Colors.black, ), ), ], diff --git a/lib/feature/auth/router/auth_router_delegate.dart b/lib/feature/auth/router/auth_router_delegate.dart index 7b9abb4..c024aac 100644 --- a/lib/feature/auth/router/auth_router_delegate.dart +++ b/lib/feature/auth/router/auth_router_delegate.dart @@ -1,4 +1,3 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_template/feature/auth/login/ui/login_page.dart'; import 'package:flutter_template/feature/auth/router/auth_nav_state.dart'; diff --git a/lib/feature/auth/signup/ui/password/password_page.dart b/lib/feature/auth/signup/ui/password/password_page.dart index 84bb1f1..8c32c6e 100644 --- a/lib/feature/auth/signup/ui/password/password_page.dart +++ b/lib/feature/auth/signup/ui/password/password_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; import 'package:flutter_template/feature/auth/signup/ui/password/password_view.dart'; class PasswordPage extends Page { diff --git a/lib/feature/auth/signup/ui/password/password_view.dart b/lib/feature/auth/signup/ui/password/password_view.dart index ee25627..de9b0da 100644 --- a/lib/feature/auth/signup/ui/password/password_view.dart +++ b/lib/feature/auth/signup/ui/password/password_view.dart @@ -1,4 +1,3 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_template/feature/auth/signup/bloc/signup_cubit.dart'; @@ -6,8 +5,6 @@ import 'package:flutter_template/feature/auth/signup/bloc/signup_cubit.dart'; class PasswordView extends StatelessWidget { final bool sessionExpiredRedirect; final TextEditingController _passwordController = TextEditingController(); - final TextEditingController _confirmPasswordController = - TextEditingController(); PasswordView({Key? key, this.sessionExpiredRedirect = false}) : super(key: key); diff --git a/lib/feature/auth/signup/ui/username/username_page.dart b/lib/feature/auth/signup/ui/username/username_page.dart index f0fdbf4..38b8c1e 100644 --- a/lib/feature/auth/signup/ui/username/username_page.dart +++ b/lib/feature/auth/signup/ui/username/username_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; import 'package:flutter_template/feature/auth/signup/ui/username/username_view.dart'; class UsernamePage extends Page { diff --git a/lib/feature/auth/signup/ui/username/username_view.dart b/lib/feature/auth/signup/ui/username/username_view.dart index bc93946..5631306 100644 --- a/lib/feature/auth/signup/ui/username/username_view.dart +++ b/lib/feature/auth/signup/ui/username/username_view.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_template/feature/auth/router/auth_router_delegate.dart'; import 'package:flutter_template/feature/auth/signup/bloc/signup_cubit.dart'; diff --git a/lib/feature/home/router/home_router_delegate.dart b/lib/feature/home/router/home_router_delegate.dart index f0b06f6..9bd5288 100644 --- a/lib/feature/home/router/home_router_delegate.dart +++ b/lib/feature/home/router/home_router_delegate.dart @@ -1,4 +1,3 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_template/feature/home/router/home_nav_state.dart'; import 'package:flutter_template/feature/home/task_detail/ui/task_detail_page.dart'; diff --git a/lib/feature/home/task_detail/ui/task_detail_page.dart b/lib/feature/home/task_detail/ui/task_detail_page.dart index 17153e5..0cba7f4 100644 --- a/lib/feature/home/task_detail/ui/task_detail_page.dart +++ b/lib/feature/home/task_detail/ui/task_detail_page.dart @@ -1,5 +1,5 @@ import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; + import 'package:flutter_template/feature/home/task_detail/ui/task_detail_view.dart'; import 'package:flutter_template/model/task/task.dart'; diff --git a/lib/feature/home/task_list/ui/task_list_page.dart b/lib/feature/home/task_list/ui/task_list_page.dart index 4e4c81e..4bc0cdc 100644 --- a/lib/feature/home/task_list/ui/task_list_page.dart +++ b/lib/feature/home/task_list/ui/task_list_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_template/data/repository/tasks/tasks_repository.dart'; import 'package:flutter_template/di/service_locator.dart'; diff --git a/lib/feature/home/task_list/ui/task_list_view.dart b/lib/feature/home/task_list/ui/task_list_view.dart index 7eabbc1..5883508 100644 --- a/lib/feature/home/task_list/ui/task_list_view.dart +++ b/lib/feature/home/task_list/ui/task_list_view.dart @@ -9,13 +9,9 @@ import 'package:flutter_template/feature/home/create_task/ui/create_task_view.da import 'package:flutter_template/feature/home/router/home_router_delegate.dart'; import 'package:flutter_template/feature/home/task_list/bloc/task_list_bloc.dart'; import 'package:flutter_template/log/log.dart'; -import 'package:flutter_template/model/task/task.dart'; -import 'package:flutter_template/model/task/task_group.dart'; -import 'package:flutter_template/model/task/task_status.dart'; import 'package:flutter_template/resources/colors/color_palette.dart'; import 'package:flutter_template/resources/styles/text_styles.dart'; import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; -import 'package:provider/provider.dart'; class TaskListView extends StatelessWidget { @override @@ -219,7 +215,7 @@ class _TaskListItem extends StatelessWidget { child: ListTile( leading: Checkbox( checkColor: ColorPalette.black, - activeColor: Theme.of(context).accentColor, + activeColor: Theme.of(context).colorScheme.secondary, value: task.status == TaskStatus.done, onChanged: (newState) => onStatusChange(task, newState!)), trailing: Icon(Icons.reorder), diff --git a/lib/feature/settings/preferences_helper.dart b/lib/feature/settings/preferences_helper.dart index 00c2d89..c00d595 100644 --- a/lib/feature/settings/preferences_helper.dart +++ b/lib/feature/settings/preferences_helper.dart @@ -31,7 +31,7 @@ class PreferencesHelper { } Future _getPreferredLanguage() async { - final systemLocale = WidgetsBinding.instance!.window.locales.first; + final systemLocale = WidgetsBinding.instance.window.locales.first; final storedLanguageCode = await serviceLocator .get>(instanceName: preferredLocalizationKey) .get(); diff --git a/lib/feature/settings/ui/widget/settings_language_widget.dart b/lib/feature/settings/ui/widget/settings_language_widget.dart index f3ae8ab..0591699 100644 --- a/lib/feature/settings/ui/widget/settings_language_widget.dart +++ b/lib/feature/settings/ui/widget/settings_language_widget.dart @@ -21,7 +21,7 @@ class _SettingsLanguageWidgetState extends State @override void initState() { - WidgetsBinding.instance?.addObserver(this); // Subscribe to changes + WidgetsBinding.instance.addObserver(this); // Subscribe to changes super.initState(); selectedLanguage = widget.selectedLanguage; } @@ -29,12 +29,12 @@ class _SettingsLanguageWidgetState extends State @override void didChangeLocales(List? locales) { setUpSelectedLanguage( - context, WidgetsBinding.instance!.window.locales.first.languageCode); + context, WidgetsBinding.instance.window.locales.first.languageCode); } @override void dispose() { - WidgetsBinding.instance?.removeObserver(this); + WidgetsBinding.instance.removeObserver(this); super.dispose(); } @@ -58,7 +58,7 @@ class _SettingsLanguageWidgetState extends State ), Radio( activeColor: Theme.of(context).brightness == Brightness.dark - ? Theme.of(context).accentColor + ? Theme.of(context).colorScheme.secondary : Theme.of(context).primaryColorDark, value: EN.languageCode, groupValue: selectedLanguage, @@ -86,7 +86,7 @@ class _SettingsLanguageWidgetState extends State ), Radio( activeColor: Theme.of(context).brightness == Brightness.dark - ? Theme.of(context).accentColor + ? Theme.of(context).colorScheme.secondary : Theme.of(context).primaryColorDark, value: MK.languageCode, groupValue: selectedLanguage, diff --git a/lib/feature/settings/ui/widget/settings_theme_switch_widget.dart b/lib/feature/settings/ui/widget/settings_theme_switch_widget.dart index 75eba96..342e09f 100644 --- a/lib/feature/settings/ui/widget/settings_theme_switch_widget.dart +++ b/lib/feature/settings/ui/widget/settings_theme_switch_widget.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; import 'package:flutter_template/resources/theme/theme_change_notifier.dart'; import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; @@ -39,7 +38,7 @@ class _SettingsThemeSwitchState extends State { ), ), Switch.adaptive( - activeColor: Theme.of(context).accentColor, + activeColor: Theme.of(context).colorScheme.secondary, value: isDarkTheme, onChanged: (val) => toggleBrightness(context, val), ), diff --git a/lib/log/file_logger.dart b/lib/log/file_logger.dart index 843f619..213355f 100644 --- a/lib/log/file_logger.dart +++ b/lib/log/file_logger.dart @@ -1,4 +1,3 @@ -import 'dart:async'; import 'dart:core'; import 'dart:io'; diff --git a/lib/main_mock.dart b/lib/main_mock.dart deleted file mode 100644 index dde6bb2..0000000 --- a/lib/main_mock.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_template/config/firebase_config.dart'; -import 'package:flutter_template/config/pre_app_config.dart'; -import 'package:flutter_template/log/bloc_events_logger.dart'; - -import 'app.dart'; -import 'config/flavor_config.dart'; -import 'config/network_constants.dart'; - -Future main() async { - FlavorConfig.set( - Flavor.MOCK, - FlavorValues( - baseUrlApi: baseUrlDev + apiPrefix, - ), - ); - - await preAppConfig(); - - runZonedGuardedWithErrorHandler( - () => runZonedWithBlocEventsLogger( - () => runApp(App()), - ), - ); -} diff --git a/lib/network/chopper/authenticator/authenticator_helper_jwt.dart b/lib/network/chopper/authenticator/authenticator_helper_jwt.dart index 7224db6..5d73873 100644 --- a/lib/network/chopper/authenticator/authenticator_helper_jwt.dart +++ b/lib/network/chopper/authenticator/authenticator_helper_jwt.dart @@ -14,8 +14,6 @@ import 'package:jwt_decoder/jwt_decoder.dart'; import 'package:single_item_storage/storage.dart'; import 'package:synchronized/synchronized.dart'; -import '../converters/response_to_type_converter.dart'; - /// Detects 401 response code and attempts to re-authenticate the user. /// /// If the user is unauthorized this component will only throw @@ -129,7 +127,7 @@ class AuthenticatorHelperJwt { Log.e('Authenticator (response) - User logged out!'); throw UnauthorizedUserException('User logged out!'); } - if (tokenCurrent != null && tokenCurrent != tokenUsed) { + if (tokenCurrent != tokenUsed) { Log.d('Authenticator (response) - Refreshed token exists' '\nnewToken: $tokenCurrent' '\nusedToken: $tokenUsed'); diff --git a/lib/network/chopper/interceptors/error_interceptor.dart b/lib/network/chopper/interceptors/error_interceptor.dart index b6f07b8..273b768 100644 --- a/lib/network/chopper/interceptors/error_interceptor.dart +++ b/lib/network/chopper/interceptors/error_interceptor.dart @@ -16,12 +16,10 @@ class ErrorInterceptor implements ResponseInterceptor { @override FutureOr onResponse(Response response) { - - // todo modify when implementing force update - // if (response.statusCode == 412) { - // _forceUpdateHandler.onForceUpdateEvent(); - // throw ForceUpdateException(response.base.reasonPhrase); - // } + if (response.statusCode == 412) { + _forceUpdateHandler.onForceUpdateEvent(); + throw ForceUpdateException(response.base.reasonPhrase); + } // Unauthorized user after failed refresh token attempt if (response.statusCode == 401) { diff --git a/lib/network/util/http_util.dart b/lib/network/util/http_util.dart index 92e4c34..8180e1e 100644 --- a/lib/network/util/http_util.dart +++ b/lib/network/util/http_util.dart @@ -1,5 +1,4 @@ import 'dart:convert'; -import 'dart:io'; import 'package:flutter_template/log/log.dart'; import 'package:http/http.dart'; diff --git a/lib/notifications/fcm/fcm_notifications_listener.dart b/lib/notifications/fcm/fcm_notifications_listener.dart index 90602ed..38f251d 100644 --- a/lib/notifications/fcm/fcm_notifications_listener.dart +++ b/lib/notifications/fcm/fcm_notifications_listener.dart @@ -212,9 +212,6 @@ class FcmNotificationsListener { if (storedToken == null || storedToken != token) { if (token != null) { - final deviceType = Platform.isIOS ? 'iOS' : 'ANDROID'; - //DeviceType.ios.name : DeviceType.android.name; - try { await userApiService.addNotificationsToken(token); await _fcmTokenStorage.save(token); diff --git a/lib/resources/theme/app_theme.dart b/lib/resources/theme/app_theme.dart index bcd84d6..7f3ec37 100755 --- a/lib/resources/theme/app_theme.dart +++ b/lib/resources/theme/app_theme.dart @@ -8,49 +8,55 @@ extension on ThemeData { } ThemeData themeLight() => ThemeData( - brightness: Brightness.light, - primaryColor: ColorPalette.primaryL, - accentColor: ColorPalette.accentL, - scaffoldBackgroundColor: ColorPalette.backgroundGray, - cardColor: ColorPalette.white, - elevatedButtonTheme: ElevatedButtonThemeData( - style: TextButton.styleFrom( - primary: ColorPalette.black, - backgroundColor: ColorPalette.accentL, - ), - ), - textButtonTheme: TextButtonThemeData( - style: TextButton.styleFrom( - primary: ColorPalette.accentL, - ), - ), - textTheme: TextTheme( - subtitle1: TextStyle( - fontWeight: FontWeight.bold, - color: ColorPalette.textGray, - ), - )).setCommonThemeElements(); + brightness: Brightness.light, + primaryColor: ColorPalette.primaryL, + scaffoldBackgroundColor: ColorPalette.backgroundGray, + cardColor: ColorPalette.white, + elevatedButtonTheme: ElevatedButtonThemeData( + style: TextButton.styleFrom( + foregroundColor: ColorPalette.black, + backgroundColor: ColorPalette.accentL, + ), + ), + textButtonTheme: TextButtonThemeData( + style: TextButton.styleFrom( + foregroundColor: ColorPalette.accentL, + ), + ), + textTheme: TextTheme( + subtitle1: TextStyle( + fontWeight: FontWeight.bold, + color: ColorPalette.textGray, + ), + ), + colorScheme: ColorScheme.fromSwatch().copyWith( + secondary: ColorPalette.accentL, + ), + ).setCommonThemeElements(); ThemeData themeDark() => ThemeData( - brightness: Brightness.dark, - primaryColor: ColorPalette.primaryD, - accentColor: ColorPalette.accentD, - scaffoldBackgroundColor: ColorPalette.primaryLightD, - cardColor: ColorPalette.primaryDisabledD, - elevatedButtonTheme: ElevatedButtonThemeData( - style: TextButton.styleFrom( - primary: ColorPalette.black, - backgroundColor: ColorPalette.accentD, - ), - ), - textButtonTheme: TextButtonThemeData( - style: TextButton.styleFrom( - primary: ColorPalette.accentD, - ), - ), - textTheme: TextTheme( - subtitle1: TextStyle( - fontWeight: FontWeight.bold, - color: ColorPalette.white, - ), - )).setCommonThemeElements(); + brightness: Brightness.dark, + primaryColor: ColorPalette.primaryD, + scaffoldBackgroundColor: ColorPalette.primaryLightD, + cardColor: ColorPalette.primaryDisabledD, + elevatedButtonTheme: ElevatedButtonThemeData( + style: TextButton.styleFrom( + foregroundColor: ColorPalette.black, + backgroundColor: ColorPalette.accentD, + ), + ), + textButtonTheme: TextButtonThemeData( + style: TextButton.styleFrom( + foregroundColor: ColorPalette.accentD, + ), + ), + textTheme: TextTheme( + subtitle1: TextStyle( + fontWeight: FontWeight.bold, + color: ColorPalette.white, + ), + ), + colorScheme: ColorScheme.fromSwatch().copyWith( + secondary: ColorPalette.accentD, + ), + ).setCommonThemeElements(); diff --git a/lib/resources/theme/theme_change_notifier.dart b/lib/resources/theme/theme_change_notifier.dart index 2c2d28b..45a8cfd 100644 --- a/lib/resources/theme/theme_change_notifier.dart +++ b/lib/resources/theme/theme_change_notifier.dart @@ -1,4 +1,3 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_template/di/service_locator.dart'; import 'package:flutter_template/feature/settings/preferences_helper.dart'; diff --git a/lib/util/app_lifecycle_observer.dart b/lib/util/app_lifecycle_observer.dart index 0ce064f..2185d87 100644 --- a/lib/util/app_lifecycle_observer.dart +++ b/lib/util/app_lifecycle_observer.dart @@ -26,7 +26,7 @@ class AppLifecycleObserver return; } _activated = true; - WidgetsBinding.instance!.addObserver(this); + WidgetsBinding.instance.addObserver(this); } /// Global method to stop monitoring application state. @@ -36,7 +36,7 @@ class AppLifecycleObserver return; } _activated = false; - WidgetsBinding.instance!.removeObserver(this); + WidgetsBinding.instance.removeObserver(this); } @override diff --git a/lib/widgets/transparent_appbar.dart b/lib/widgets/transparent_appbar.dart index 8921049..1caf50f 100644 --- a/lib/widgets/transparent_appbar.dart +++ b/lib/widgets/transparent_appbar.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; class TransparentAppBar extends StatelessWidget with PreferredSizeWidget { @override @@ -27,7 +28,7 @@ class TransparentAppBar extends StatelessWidget with PreferredSizeWidget { centerTitle: true, title: title, backgroundColor: Colors.transparent, - brightness: Brightness.light, + systemOverlayStyle: SystemUiOverlayStyle.dark, elevation: 0, iconTheme: IconThemeData( color: Colors.black, //change your color here diff --git a/test/dart_type_test.dart b/test/dart_type_test.dart deleted file mode 100644 index 70f015c..0000000 --- a/test/dart_type_test.dart +++ /dev/null @@ -1,142 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; - -Type _typeOf() => T; - -/// Tests for dart [Type]. -void main() { - group('is', () { - test('is on object: Will be true for this and parent classes', () { - final ChildClass childObject = ChildClass(); - - // True - expectTrue(childObject is ChildClass); - expectTrue(childObject is ParentClass); - expectTrue(childObject is Interface); - - // False - expectTrue(childObject is! GrandChildClass); - }); - - test('is on class: A class is a Type', () { - // True - expectTrue(ChildClass is Type); - - // False - expectFalse(ChildClass is ChildClass); - expectFalse(ChildClass is ParentClass); - expectFalse(ChildClass is Interface); - }); - - test('is on generic: Same as class', () { - void Function() func = () { - // True - expectTrue(T is Type); - - // False - expectFalse(T is ChildClass); - expectFalse(T is ParentClass); - expectFalse(T is Interface); - }; - - func(); - }); - }); - - group('==', () { - test("== on object: Can't compare unrelated types", () { - final ChildClass childObject = ChildClass(); - - // False - expectFalse(childObject == ChildClass); - expectFalse(childObject == ParentClass); - expectFalse(childObject == Interface); - }); - - test("== on class: Comparing types won't be true for superclasses", () { - // True - expectTrue(ChildClass == ChildClass); - - // False - expectFalse(ChildClass == Type); - expectFalse(ChildClass == ParentClass); - expectFalse(ChildClass == Interface); - }); - - test('== on generic: Same as class', () { - void Function() func = () { - // True - expectTrue(T == ChildClass); - - // False - expectFalse(T == Type); - expectFalse(T == ParentClass); - expectFalse(T == Interface); - }; - - func(); - }); - }); - - group('type of', () { - test('type of is', () { - // True - expectTrue(_typeOf() is Type); - - // False - expectFalse(_typeOf() is ChildClass); - expectFalse(_typeOf() is ParentClass); - expectFalse(_typeOf() is Interface); - }); - - test('type of equals', () { - // True - expectTrue(_typeOf() == ChildClass); - - // False - expectFalse(_typeOf() == Type); - expectFalse(_typeOf() == ParentClass); - expectFalse(_typeOf() == Interface); - }); - - test('type of equals: nested generics', () { - void Function() func = () { - // True - expectTrue(T == _typeOf>()); - - // False - expectFalse(T == List); - expectFalse(T is List); - expectFalse(T is List); - }; - - func>(); - }); - - test('void type', () { - void Function() func = () { - // True - expectTrue(T == _typeOf()); - expectTrue(T is Type); - }; - - func(); - }); - - test('runtime type', () { - // True - expectTrue(ChildClass().runtimeType == ChildClass); - }); - }); -} - -void expectTrue(bool expression) => expect(expression, isTrue); - -void expectFalse(bool expression) => expect(expression, isFalse); - -abstract class Interface {} - -abstract class ParentClass {} - -class ChildClass extends ParentClass implements Interface {} - -class GrandChildClass extends ParentClass implements Interface {} diff --git a/test/data/repository/tasks/tasks_repository_test.dart b/test/data/repository/tasks/tasks_repository_test.dart index e4d9bc8..c8e5131 100644 --- a/test/data/repository/tasks/tasks_repository_test.dart +++ b/test/data/repository/tasks/tasks_repository_test.dart @@ -4,8 +4,6 @@ import 'package:flutter_template/data/repository/tasks/tasks_cache_data_source.d import 'package:flutter_template/data/repository/tasks/tasks_data_source.dart'; import 'package:flutter_template/data/repository/tasks/tasks_repository.dart'; import 'package:flutter_template/model/task/task_event.dart'; -import 'package:flutter_template/model/task/task_group.dart'; -import 'package:flutter_template/model/task/task_status.dart'; import 'package:flutter_test/flutter_test.dart'; import 'tasks_data_source_base_test.dart'; diff --git a/test/network/chopper/authenticator/authenticator_helper_jwt_test.dart b/test/network/chopper/authenticator/authenticator_helper_jwt_test.dart index fe2ecd1..7b9a0f7 100644 --- a/test/network/chopper/authenticator/authenticator_helper_jwt_test.dart +++ b/test/network/chopper/authenticator/authenticator_helper_jwt_test.dart @@ -1,7 +1,6 @@ import 'package:chopper/chopper.dart'; import 'package:flutter_template/model/task/task.dart'; import 'package:flutter_template/model/task/task_status.dart'; -import 'package:flutter_template/model/user/credentials.dart'; import 'package:flutter_template/model/user/user_credentials.dart'; import 'package:flutter_template/network/chopper/authenticator/authenticator_helper_jwt.dart'; import 'package:flutter_template/network/user_auth_api_service.dart'; diff --git a/test/platform_comm/platform_comm_test.dart b/test/platform_comm/platform_comm_test.dart index 1359062..41cf3c2 100644 --- a/test/platform_comm/platform_comm_test.dart +++ b/test/platform_comm/platform_comm_test.dart @@ -163,7 +163,7 @@ void main() { .thenAnswer((realInvocation) => Future.value('result')); // act - void voidUnusableResult = await platformComm.invokeMethod( + await platformComm.invokeMethod( method: method, param: 'param', deserializeResult: (resultRaw) => 23, diff --git a/test/util/nullable_util_test.dart b/test/util/nullable_util_test.dart index 34e706e..94e3bfb 100644 --- a/test/util/nullable_util_test.dart +++ b/test/util/nullable_util_test.dart @@ -3,8 +3,6 @@ import 'package:flutter_test/flutter_test.dart'; /// Tests for nullable utils. void main() { - final Map map = Map.unmodifiable({5: 'five', 10: 'ten'}); - group('NullSafeFuture', () { test('cast', () { Future nullableFuture = Future.value(10); diff --git a/test_driver/main_test.dart b/test_driver/main_test.dart index 6a4288e..4a9039e 100644 --- a/test_driver/main_test.dart +++ b/test_driver/main_test.dart @@ -8,7 +8,7 @@ import 'platform_comm_test_widget.dart'; Future main() async { FlavorConfig.set( - Flavor.MOCK, + Flavor.DEV, FlavorValues( baseUrlApi: baseUrlDev + apiPrefix, ), diff --git a/test_driver/platform_comm_test_widget.dart b/test_driver/platform_comm_test_widget.dart index 44e62dd..065ad3a 100644 --- a/test_driver/platform_comm_test_widget.dart +++ b/test_driver/platform_comm_test_widget.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_template/di/service_locator.dart'; import 'package:flutter_template/model/task/task_group.dart'; import 'package:flutter_template/platform_comm/platform_comm.dart';