Skip to content

Commit

Permalink
Merge branch 'release-v2.3.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
thiagorocha503 committed Nov 9, 2023
2 parents d5d66e9 + 0f1403c commit 914c4f0
Show file tree
Hide file tree
Showing 29 changed files with 415 additions and 360 deletions.
31 changes: 8 additions & 23 deletions lib/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ import 'package:todo/language/preferences/language_preferences.dart';
import 'package:todo/subtask/repository/repository.dart';
import 'package:todo/subtask/repository/subtask_repository.dart';
import 'package:todo/theme/cubit/theme_cubit.dart';
import 'package:todo/theme/model/app_theme.dart';
import 'package:todo/theme/preferences/theme_preferences.dart';
import 'package:todo/theme/ui/widget/theme_data.dart';
import 'package:todo/theme/ui/widget/color_schemes.dart';
import 'package:todo/todo_over_view/bloc/todo_overview_bloc.dart';
import 'package:todo/todo_over_view/bloc/todo_overview_event.dart';
import 'package:todo/todo_over_view/repository/repository.dart';
Expand Down Expand Up @@ -76,32 +75,18 @@ class App extends StatelessWidget {
create: (BuildContext context) => todoOverViewBloc,
),
],
child: BlocBuilder<ThemeCubit, AppTheme>(
builder: (conttext, AppTheme appTheme) {
ThemeData theme;
switch (appTheme) {
case AppTheme.light:
theme = lightTheme;
break;
case AppTheme.dark:
theme = darkTheme;
break;
case AppTheme.system:
if (MediaQueryData.fromView(View.of(context))
.platformBrightness ==
Brightness.light) {
theme = lightTheme;
} else {
theme = darkTheme;
}
break;
}
child: BlocBuilder<ThemeCubit, ThemeMode>(
builder: (conttext, ThemeMode themeMode) {
return BlocBuilder<LanguageCubit, Locale>(
builder: (context, Locale locale) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Tasks',
theme: theme,
themeMode: themeMode,
theme: ThemeData(
useMaterial3: true, colorScheme: lightColorScheme),
darkTheme:
ThemeData(useMaterial3: true, colorScheme: darkColorScheme),
home: const TodoOverviewPage(),
localizationsDelegates: const [
AppLocalizations.delegate,
Expand Down
2 changes: 1 addition & 1 deletion lib/language/ui/widget/language_list_tile_select.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class LanguageListTileSelect extends StatelessWidget {
),
child: ListTile(
trailing: selected
? Icon(Icons.check, color: Theme.of(context).colorScheme.secondary)
? Icon(Icons.check, color: Theme.of(context).colorScheme.primary)
: null,
title: Padding(
padding: const EdgeInsets.only(left: 16),
Expand Down
2 changes: 1 addition & 1 deletion lib/note/note_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class NotePage extends StatelessWidget {
),
actions: [
Padding(
padding: const EdgeInsets.only(right: 10.0),
padding: const EdgeInsets.only(right: 16.0),
child: NoteSaveButton(controller: controller),
),
],
Expand Down
4 changes: 0 additions & 4 deletions lib/note/ui/note_save_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,6 @@ class NoteSaveButton extends StatelessWidget {
return TextButton(
child: Text(
AppLocalizations.of(context).translate("done").capitalize(),
style: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
),
),
onPressed: () {
if (controller.text != initialNote) {
Expand Down
9 changes: 4 additions & 5 deletions lib/settings/ui/widgets/theme_list_tile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:todo/app_localizations.dart';
import 'package:todo/theme/cubit/theme_cubit.dart';
import 'package:todo/theme/model/app_theme.dart';
import 'package:todo/theme/ui/theme_page.dart';
import 'package:todo/util/string_extension.dart';

Expand Down Expand Up @@ -33,17 +32,17 @@ class SubtitleTheme extends StatelessWidget {

@override
Widget build(BuildContext context) {
return BlocBuilder<ThemeCubit, AppTheme>(
return BlocBuilder<ThemeCubit, ThemeMode>(
builder: (context, state) {
String text;
switch (state) {
case AppTheme.light:
case ThemeMode.light:
text = AppLocalizations.of(context).translate("light");
break;
case AppTheme.dark:
case ThemeMode.dark:
text = AppLocalizations.of(context).translate("dark");
break;
case AppTheme.system:
case ThemeMode.system:
text = AppLocalizations.of(context).translate("system");
break;
}
Expand Down
12 changes: 3 additions & 9 deletions lib/subtask/ui/subtask_over_view_list_tile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ class SubtaskOverViewListTile extends StatelessWidget {
isChecked: subtask.complete,
size: 26,
border: Border.all(
color: _getCheckboxBorderColor(context, subtask),
color: subtask.complete
? Theme.of(context).colorScheme.primary
: Theme.of(context).colorScheme.secondary,
width: 2,
),
uncheckedColor: Colors.transparent,
Expand Down Expand Up @@ -100,12 +102,4 @@ class SubtaskOverViewListTile extends StatelessWidget {
);
});
}

Color _getCheckboxBorderColor(BuildContext context, Subtask subtask) {
if (subtask.complete) {
return Theme.of(context).colorScheme.primary;
} else {
return Colors.grey;
}
}
}
8 changes: 4 additions & 4 deletions lib/theme/cubit/theme_cubit.dart
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:todo/theme/model/app_theme.dart';
import 'package:todo/theme/preferences/theme_preferences.dart';

class ThemeCubit extends Cubit<AppTheme> {
class ThemeCubit extends Cubit<ThemeMode> {
ThemePreferences preferences;
ThemeCubit({required this.preferences, required AppTheme theme})
ThemeCubit({required this.preferences, required ThemeMode theme})
: super(theme) {
preferences.stream.listen((theme) {
emit(theme);
});
}

void changue(AppTheme theme) {
void changue(ThemeMode theme) {
preferences.setTheme(theme);
}
}
1 change: 0 additions & 1 deletion lib/theme/model/app_theme.dart

This file was deleted.

16 changes: 8 additions & 8 deletions lib/theme/preferences/theme_preferences.dart
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:mockito/annotations.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:todo/theme/model/app_theme.dart';

@GenerateNiceMocks([MockSpec<ThemePreferences>()])
class ThemePreferences {
final SharedPreferences preferences;
// ignore: non_constant_identifier_names
final KEY = "todo-theme";

final StreamController<AppTheme> _controller = StreamController();
final StreamController<ThemeMode> _controller = StreamController();

Stream<AppTheme> get stream => _controller.stream;
Stream<ThemeMode> get stream => _controller.stream;

ThemePreferences({required this.preferences});

AppTheme getTheme() {
ThemeMode getTheme() {
int? index = preferences.getInt(KEY);
if (index != null) {
return AppTheme.values[index];
return ThemeMode.values[index];
}
setTheme(AppTheme.light);
return AppTheme.light;
setTheme(ThemeMode.light);
return ThemeMode.light;
}

void setTheme(AppTheme theme) {
void setTheme(ThemeMode theme) {
preferences.setInt(KEY, theme.index);
_controller.sink.add(theme);
}
Expand Down
11 changes: 5 additions & 6 deletions lib/theme/ui/theme_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:todo/app_localizations.dart';
import 'package:todo/theme/cubit/theme_cubit.dart';
import 'package:todo/theme/model/app_theme.dart';
import 'package:todo/theme/ui/widget/theme_list_tile_select.dart';
import 'package:todo/util/string_extension.dart';

class ThemeItem {
final String name;
final AppTheme value;
final ThemeMode value;

ThemeItem({required this.name, required this.value});
}
Expand All @@ -21,15 +20,15 @@ class ThemePage extends StatelessWidget {
List<ThemeItem> themes = [
ThemeItem(
name: AppLocalizations.of(context).translate("system"),
value: AppTheme.system,
value: ThemeMode.system,
),
ThemeItem(
name: AppLocalizations.of(context).translate("light"),
value: AppTheme.light,
value: ThemeMode.light,
),
ThemeItem(
name: AppLocalizations.of(context).translate("dark"),
value: AppTheme.dark,
value: ThemeMode.dark,
),
];
return Scaffold(
Expand All @@ -44,7 +43,7 @@ class ThemePage extends StatelessWidget {
title:
Text(AppLocalizations.of(context).translate("theme").capitalize()),
),
body: BlocBuilder<ThemeCubit, AppTheme>(
body: BlocBuilder<ThemeCubit, ThemeMode>(
builder: (context, appTheme) {
return ListView.builder(
itemCount: themes.length,
Expand Down
69 changes: 69 additions & 0 deletions lib/theme/ui/widget/color_schemes.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import 'package:flutter/material.dart';

const lightColorScheme = ColorScheme(
brightness: Brightness.light,
primary: Color(0xFF0061A4),
onPrimary: Color(0xFFFFFFFF),
primaryContainer: Color(0xFFD1E4FF),
onPrimaryContainer: Color(0xFF001D36),
secondary: Color(0xFF535F70),
onSecondary: Color(0xFFFFFFFF),
secondaryContainer: Color(0xFFD7E3F7),
onSecondaryContainer: Color(0xFF101C2B),
tertiary: Color(0xFF6B5778),
onTertiary: Color(0xFFFFFFFF),
tertiaryContainer: Color(0xFFF2DAFF),
onTertiaryContainer: Color(0xFF251431),
error: Color(0xFFBA1A1A),
errorContainer: Color(0xFFFFDAD6),
onError: Color(0xFFFFFFFF),
onErrorContainer: Color(0xFF410002),
background: Color(0xFFFDFCFF),
onBackground: Color(0xFF1A1C1E),
surface: Color(0xFFFDFCFF),
onSurface: Color(0xFF1A1C1E),
surfaceVariant: Color(0xFFDFE2EB),
onSurfaceVariant: Color(0xFF43474E),
outline: Color(0xFF73777F),
onInverseSurface: Color(0xFFF1F0F4),
inverseSurface: Color(0xFF2F3033),
inversePrimary: Color(0xFF9ECAFF),
shadow: Color(0xFF000000),
surfaceTint: Color(0xFF0061A4),
outlineVariant: Color(0xFFC3C7CF),
scrim: Color(0xFF000000),
);

const darkColorScheme = ColorScheme(
brightness: Brightness.dark,
primary: Color(0xFF9ECAFF),
onPrimary: Color(0xFF003258),
primaryContainer: Color(0xFF00497D),
onPrimaryContainer: Color(0xFFD1E4FF),
secondary: Color(0xFFBBC7DB),
onSecondary: Color(0xFF253140),
secondaryContainer: Color(0xFF3B4858),
onSecondaryContainer: Color(0xFFD7E3F7),
tertiary: Color(0xFFD6BEE4),
onTertiary: Color(0xFF3B2948),
tertiaryContainer: Color(0xFF523F5F),
onTertiaryContainer: Color(0xFFF2DAFF),
error: Color(0xFFFFB4AB),
errorContainer: Color(0xFF93000A),
onError: Color(0xFF690005),
onErrorContainer: Color(0xFFFFDAD6),
background: Color(0xFF1A1C1E),
onBackground: Color(0xFFE2E2E6),
surface: Color(0xFF1A1C1E),
onSurface: Color(0xFFE2E2E6),
surfaceVariant: Color(0xFF43474E),
onSurfaceVariant: Color(0xFFC3C7CF),
outline: Color(0xFF8D9199),
onInverseSurface: Color(0xFF1A1C1E),
inverseSurface: Color(0xFFE2E2E6),
inversePrimary: Color(0xFF0061A4),
shadow: Color(0xFF000000),
surfaceTint: Color(0xFF9ECAFF),
outlineVariant: Color(0xFF43474E),
scrim: Color(0xFF000000),
);
8 changes: 0 additions & 8 deletions lib/theme/ui/widget/theme_data.dart

This file was deleted.

2 changes: 1 addition & 1 deletion lib/theme/ui/widget/theme_list_tile_select.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class ThemeListTileSelect extends StatelessWidget {
trailing: context.read<ThemeCubit>().state == themeItem.value
? Icon(
Icons.check,
color: Theme.of(context).colorScheme.secondary,
color: Theme.of(context).colorScheme.primary,
)
: null,
onTap: () {
Expand Down
24 changes: 21 additions & 3 deletions lib/todo_edit/ui/todo_edit_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ import 'package:todo/todo_edit/bloc/todo_edit_bloc.dart';
import 'package:todo/todo_edit/bloc/todo_edit_state.dart';
import 'package:todo/todo_edit/ui/widget/due_date_list_tile.dart';
import 'package:todo/todo_edit/ui/widget/footer.dart';
import 'package:todo/todo_over_view/bloc/todo_overview_bloc.dart';
import 'package:todo/todo_over_view/bloc/todo_overview_event.dart';
import 'package:todo/todo_over_view/model/todo.dart';
import 'package:todo/todo_over_view/repository/repository.dart';
import 'package:todo/todo_edit/ui/widget/note_list_tile.dart';
import 'package:todo/todo_over_view/ui/widget/todo_delete_alert_dialog.dart';
import 'package:todo/widget/error_dialog.dart';
import 'package:todo/todo_edit/ui/widget/todo_list_tile.dart';
import 'package:todo/util/string_extension.dart';
Expand Down Expand Up @@ -82,9 +85,24 @@ class TodoEditPageView extends StatelessWidget {
title: Text(
AppLocalizations.of(context).translate("todo").capitalize(),
),
actions: const [
SizedBox(
width: 32,
actions: [
Padding(
padding: const EdgeInsets.only(right: 16),
child: IconButton(
onPressed: () {
showDialog(
context: context,
builder: (context) => TodoDeleteAlertDialog(onConfirm: () {
context
.read<TodoOverviewBloc>()
.add(TodoOverviewDeleted(id: todo.id));
Navigator.pop(context);
}),
);
},
icon: const Icon(Icons.delete),
tooltip: AppLocalizations.of(context).translate("delete"),
),
)
],
),
Expand Down
2 changes: 1 addition & 1 deletion lib/todo_edit/ui/widget/due_date_calendar_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class DueDateCalendarButton extends StatelessWidget {
if (dueDate.compareDateTo(today) >= 0) {
color = Theme.of(context).colorScheme.primary;
} else {
color = Colors.red;
color = Theme.of(context).colorScheme.error;
}
}
return Icon(
Expand Down
Loading

0 comments on commit 914c4f0

Please sign in to comment.