Skip to content
This repository was archived by the owner on Oct 28, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions lib/feature/auth/login/ui/login_page.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -12,8 +11,7 @@ class LoginPage extends Page {
return CupertinoPageRoute(
settings: this,
builder: (BuildContext context) => BlocProvider<LoginCubit>(
create: (BuildContext context) =>
LoginCubit(serviceLocator.get<UserManager>()),
create: (BuildContext context) => LoginCubit(serviceLocator.get<UserManager>()),
child: LoginView(),
),
);
Expand Down
2 changes: 0 additions & 2 deletions lib/feature/auth/login/ui/login_view.dart
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
9 changes: 2 additions & 7 deletions lib/feature/auth/router/auth_router_delegate.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -11,8 +10,7 @@ class AuthRouterDelegate extends RouterDelegate

AuthNavState _authNavState;

AuthRouterDelegate(this.navigatorKey,
[this._authNavState = const AuthNavState.login()]);
AuthRouterDelegate(this.navigatorKey, [this._authNavState = const AuthNavState.login()]);

void setLoginNavState() {
_authNavState = AuthNavState.login();
Expand All @@ -36,10 +34,7 @@ class AuthRouterDelegate extends RouterDelegate
pages: [
LoginPage(),
if (_authNavState is SignupUsernameNavState) UsernamePage(),
if (_authNavState is SignupPasswordNavState) ...[
UsernamePage(),
PasswordPage()
],
if (_authNavState is SignupPasswordNavState) ...[UsernamePage(), PasswordPage()],
],
onPopPage: (route, result) {
_authNavState = _authNavState.prevState ?? AuthNavState.login();
Expand Down
3 changes: 1 addition & 2 deletions lib/feature/auth/signup/ui/password/password_page.dart
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -10,4 +9,4 @@ class PasswordPage extends Page {
builder: (BuildContext context) => PasswordView(),
);
}
}
}
10 changes: 3 additions & 7 deletions lib/feature/auth/signup/ui/password/password_view.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
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';

class PasswordView extends StatelessWidget {
final bool sessionExpiredRedirect;
final TextEditingController _passwordController = TextEditingController();
final TextEditingController _confirmPasswordController =
TextEditingController();
final TextEditingController _confirmPasswordController = TextEditingController();

PasswordView({Key? key, this.sessionExpiredRedirect = false})
: super(key: key);
PasswordView({Key? key, this.sessionExpiredRedirect = false}) : super(key: key);

@override
Widget build(BuildContext context) {
Expand Down Expand Up @@ -54,8 +51,7 @@ class PasswordView extends StatelessWidget {
}

_onSignUpPressed(BuildContext context) {
BlocProvider.of<SignupCubit>(context)
.onPasswordEntered(_passwordController.text);
BlocProvider.of<SignupCubit>(context).onPasswordEntered(_passwordController.text);
BlocProvider.of<SignupCubit>(context).onUserSignup();
}
}
1 change: 0 additions & 1 deletion lib/feature/auth/signup/ui/username/username_page.dart
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down
4 changes: 1 addition & 3 deletions lib/feature/auth/signup/ui/username/username_view.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -54,7 +53,6 @@ class UsernameView extends StatelessWidget {
}

void _onNextPressed(BuildContext context) {
BlocProvider.of<SignupCubit>(context)
.onUsernameEntered(_usernameController.text);
BlocProvider.of<SignupCubit>(context).onUsernameEntered(_usernameController.text);
}
}
8 changes: 3 additions & 5 deletions lib/feature/home/router/home_router_delegate.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -10,8 +9,7 @@ class HomeRouterDelegate extends RouterDelegate
with ChangeNotifier, PopNavigatorRouterDelegateMixin {
final GlobalKey<NavigatorState> navigatorKey;

HomeRouterDelegate(this.navigatorKey,
[this.homeNavState = const HomeNavState.taskList()]);
HomeRouterDelegate(this.navigatorKey, [this.homeNavState = const HomeNavState.taskList()]);

HomeNavState homeNavState = HomeNavState.taskList();
bool isSettingsShownState = false;
Expand All @@ -21,7 +19,7 @@ class HomeRouterDelegate extends RouterDelegate
notifyListeners();
}

void setIsSettingsShownState(bool isShown){
void setIsSettingsShownState(bool isShown) {
isSettingsShownState = isShown;
notifyListeners();
}
Expand All @@ -37,7 +35,7 @@ class HomeRouterDelegate extends RouterDelegate
if (isSettingsShownState) SettingsPage()
],
onPopPage: (route, result) {
if(isSettingsShownState) isSettingsShownState = false;
if (isSettingsShownState) isSettingsShownState = false;
homeNavState = HomeNavState.taskList();
return route.didPop(result);
});
Expand Down
1 change: 0 additions & 1 deletion lib/feature/home/task_detail/ui/task_detail_page.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
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';

Expand Down
7 changes: 3 additions & 4 deletions lib/feature/home/task_list/ui/task_list_page.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -13,9 +12,9 @@ class TaskListPage extends Page {
return CupertinoPageRoute(
settings: this,
builder: (BuildContext context) => BlocProvider<TaskListBloc>(
create: (BuildContext context) => TaskListBloc(
serviceLocator.get<TasksRepository>(),
serviceLocator.get<UserManager>())..add(LoadTasks()),
create: (BuildContext context) =>
TaskListBloc(serviceLocator.get<TasksRepository>(), serviceLocator.get<UserManager>())
..add(LoadTasks()),
child: TaskListView(),
),
);
Expand Down
36 changes: 11 additions & 25 deletions lib/feature/home/task_list/ui/task_list_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,14 @@ 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
Widget build(BuildContext context) {
return BlocConsumer<TaskListBloc, TaskListState>(
listener: (context, state) {
return BlocConsumer<TaskListBloc, TaskListState>(listener: (context, state) {
// do stuff here based on TasksCubit's state
if (state is TaskOpFailure) {
//todo display an error dialog here on top of the presented UI
Expand All @@ -46,9 +41,7 @@ class TaskListView extends StatelessWidget {
title: Text(AppLocalizations.of(context)!.settings),
onTap: () async {
Navigator.of(context).pop();
context
.read<HomeRouterDelegate>()
.setIsSettingsShownState(true);
context.read<HomeRouterDelegate>().setIsSettingsShownState(true);
},
),
ListTile(
Expand Down Expand Up @@ -102,8 +95,7 @@ class TaskListView extends StatelessWidget {
}
}

Widget _taskListWidget(
BuildContext context, Map<TaskGroup, List<Task>> tasksGrouped) {
Widget _taskListWidget(BuildContext context, Map<TaskGroup, List<Task>> tasksGrouped) {
return Scrollbar(
child: SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
Expand All @@ -114,8 +106,7 @@ class TaskListView extends StatelessWidget {
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
for (TaskGroup key in tasksGrouped.keys)
getItem(key, tasksGrouped[key]!, context)
for (TaskGroup key in tasksGrouped.keys) getItem(key, tasksGrouped[key]!, context)
],
),
),
Expand All @@ -128,8 +119,7 @@ class TaskListView extends StatelessWidget {
}

Widget _emptyListWidget(BuildContext context) {
return Center(
child: Text(AppLocalizations.of(context)!.task_list_no_tasks_message));
return Center(child: Text(AppLocalizations.of(context)!.task_list_no_tasks_message));
}

Widget _errorWidget(var state, BuildContext context) {
Expand All @@ -154,8 +144,7 @@ class TaskListView extends StatelessWidget {
});
}

ReorderableListView getItem(
TaskGroup key, List<Task> tasks, BuildContext context) {
ReorderableListView getItem(TaskGroup key, List<Task> tasks, BuildContext context) {
final taskListBloc = BlocProvider.of<TaskListBloc>(context);

return ReorderableListView(
Expand Down Expand Up @@ -186,11 +175,9 @@ class TaskListView extends StatelessWidget {
_TaskListItem(
key: ValueKey(key.id + task.id),
task: task,
onClick: (task) => context
.read<HomeRouterDelegate>()
.setTaskDetailNavState(task),
onStatusChange: (task, isDone) => taskListBloc
.add(isDone ? TaskCompleted(task) : TaskReopened(task)),
onClick: (task) => context.read<HomeRouterDelegate>().setTaskDetailNavState(task),
onStatusChange: (task, isDone) =>
taskListBloc.add(isDone ? TaskCompleted(task) : TaskReopened(task)),
),
],
onReorder: (oldIndex, newIndex) {
Expand Down Expand Up @@ -225,9 +212,8 @@ class _TaskListItem extends StatelessWidget {
trailing: Icon(Icons.reorder),
title: task.status == TaskStatus.done
? Text(task.title,
style: TextStyle(
decoration: TextDecoration.lineThrough,
color: ColorPalette.textGray))
style:
TextStyle(decoration: TextDecoration.lineThrough, color: ColorPalette.textGray))
: Text(task.title),
onTap: () => onClick(task),
),
Expand Down
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -50,8 +49,7 @@ class _SettingsThemeSwitchState extends State<SettingsThemeSwitch> {
}

void updateTheme(BuildContext context) {
final bool currentBrightness =
Theme.of(context).brightness == Brightness.dark;
final bool currentBrightness = Theme.of(context).brightness == Brightness.dark;
if (currentBrightness != isDarkTheme) {
setState(() {
isDarkTheme = currentBrightness;
Expand All @@ -63,8 +61,7 @@ class _SettingsThemeSwitchState extends State<SettingsThemeSwitch> {
setState(() {
isDarkTheme = val;
});
final themeNotifier =
Provider.of<ThemeChangeNotifier>(context, listen: false);
final themeNotifier = Provider.of<ThemeChangeNotifier>(context, listen: false);
await themeNotifier.toggleTheme();
}
}
4 changes: 1 addition & 3 deletions lib/log/file_logger.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import 'dart:async';
import 'dart:core';
import 'dart:io';

Expand Down Expand Up @@ -29,8 +28,7 @@ class FileLogger implements AbstractLogger {

/// Creates a new file logger with file in the application's
/// documents directory named flutter_logs_{platform}_{flavor}.txt
factory FileLogger.withDefaultFile() =>
FileLogger(globalLogFileLock, () async {
factory FileLogger.withDefaultFile() => FileLogger(globalLogFileLock, () async {
final flavor = FlavorConfig.isDev() ? "dev" : "stg";
final platform = Platform.isIOS ? "iOS" : "Android";

Expand Down
16 changes: 4 additions & 12 deletions lib/resources/theme/theme_change_notifier.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -11,8 +10,7 @@ class ThemeChangeNotifier extends ChangeNotifier {
ThemeChangeNotifier.lightTheme() : _isDarkTheme = false;

ThemeChangeNotifier.systemTheme(BuildContext context)
: _isDarkTheme =
MediaQuery.platformBrightnessOf(context) == Brightness.dark;
: _isDarkTheme = MediaQuery.platformBrightnessOf(context) == Brightness.dark;

ThemeChangeNotifier.fromThemeMode(BuildContext context, ThemeMode themeMode)
: _isDarkTheme = themeMode == ThemeMode.dark ||
Expand All @@ -25,26 +23,20 @@ class ThemeChangeNotifier extends ChangeNotifier {

Future<void> setDarkTheme() async {
_isDarkTheme = true;
await serviceLocator
.get<PreferencesHelper>()
.setIsDarkThemePreferred(_isDarkTheme);
await serviceLocator.get<PreferencesHelper>().setIsDarkThemePreferred(_isDarkTheme);
notifyListeners();
}

Future<void> setLightTheme() async {
_isDarkTheme = false;
await serviceLocator
.get<PreferencesHelper>()
.setIsDarkThemePreferred(_isDarkTheme);
await serviceLocator.get<PreferencesHelper>().setIsDarkThemePreferred(_isDarkTheme);
notifyListeners();
}

/// Toggles the current theme value. Returns `true` if dark is the new theme.
Future<bool> toggleTheme() async {
_isDarkTheme = !_isDarkTheme;
await serviceLocator
.get<PreferencesHelper>()
.setIsDarkThemePreferred(_isDarkTheme);
await serviceLocator.get<PreferencesHelper>().setIsDarkThemePreferred(_isDarkTheme);
notifyListeners();
return _isDarkTheme;
}
Expand Down
Loading