Skip to content

Commit

Permalink
Merge branch 'release-v2.2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
thiagorocha503 committed Dec 27, 2022
2 parents 3c15f40 + 0c7b4c2 commit 2903baf
Show file tree
Hide file tree
Showing 28 changed files with 545 additions and 117 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@

#vim
*~
# Miscellaneous
*.class
*.log
Expand Down
6 changes: 5 additions & 1 deletion assets/l10n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,9 @@
"delete":"delete task",
"enter-name":"Enter name",
"fill-out-name":"fill out this field",
"add-subtask":"add subtask"
"add-subtask":"add subtask",
"theme":"theme",
"light":"light",
"dark":"dark",
"system":"system"
}
6 changes: 5 additions & 1 deletion assets/l10n/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,9 @@
"delete":"eliminar tarea",
"enter-name":"Ingrese nombre",
"fill-out-name":"llena este campo",
"add-subtask":"add subtask"
"add-subtask":"add subtask",
"theme":"theme",
"light":"light",
"dark":"dark",
"system":"system"
}
6 changes: 5 additions & 1 deletion assets/l10n/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,9 @@
"delete":"remover tarefa",
"enter-name":"Digite o name",
"fill-out-name":"preencha este campo",
"add-subtask":"adicionar subtarefa"
"add-subtask":"adicionar subtarefa",
"theme":"tema",
"light":"claro",
"dark":"escuro",
"system":"sistema"
}
103 changes: 75 additions & 28 deletions lib/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,15 @@ import 'package:todo/filter/bloc/filter_bloc.dart';
import 'package:todo/filter/preferences/filter_preferences.dart';
import 'package:todo/language/cubit/language_cubit.dart';
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/todo_over_view/bloc/todo_over_view_bloc.dart';
import 'package:todo/todo_over_view/bloc/todo_over_view_event.dart';
import 'package:todo/todo_over_view/repository/repository.dart';
import 'package:todo/todo_over_view/repository/todo_repository.dart';
import 'package:todo/todo_over_view/ui/todo_over_view_page.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
Expand All @@ -18,45 +25,83 @@ class App extends StatelessWidget {

@override
Widget build(BuildContext context) {
TodoRepository repository = TodoRepository();
LanguagePreferences localePreferences =
LanguagePreferences(preferences: preferences);
FilterPreferences filterPreferences =
FilterPreferences(preferences: preferences);
ITodoRepository todoRepository = TodoRepository();
ISubtaskRepository subtaskRepository = SubtaskRepository();
LanguagePreferences localePreferences = LanguagePreferences(
preferences: preferences,
);
FilterPreferences filterPreferences = FilterPreferences(
preferences: preferences,
);
ThemePreferences themePreferences = ThemePreferences(
preferences: preferences,
);

TodoOverViewBloc todoOverViewBloc = TodoOverViewBloc(
filter: filterPreferences.filter,
repository: repository,
repository: todoRepository,
)..add(TodoOverViewFetchEvent());
return RepositoryProvider(
create: (context) => repository,

return MultiRepositoryProvider(
providers: [
RepositoryProvider<ITodoRepository>(
create: (context) => todoRepository,
),
RepositoryProvider<ISubtaskRepository>(
create: (context) => subtaskRepository,
),
],
child: MultiBlocProvider(
providers: [
BlocProvider<FilterCubit>(
create: (context) => FilterCubit(
preferences: filterPreferences,
bloc: todoOverViewBloc,
filter: filterPreferences.filter,
),
providers: [
BlocProvider<ThemeCubit>(
create: (context) => ThemeCubit(
preferences: themePreferences,
theme: themePreferences.getTheme(),
),
BlocProvider<LanguageCubit>(
create: (context) => LanguageCubit(
preferences: localePreferences,
code: localePreferences.language.name,
),
),
BlocProvider<FilterCubit>(
create: (context) => FilterCubit(
preferences: filterPreferences,
bloc: todoOverViewBloc,
filter: filterPreferences.filter,
),
BlocProvider<TodoOverViewBloc>(
create: (BuildContext context) => todoOverViewBloc,
),
BlocProvider<LanguageCubit>(
create: (context) => LanguageCubit(
preferences: localePreferences,
code: localePreferences.language.name,
),
],
child: BlocBuilder<LanguageCubit, Locale>(
),
BlocProvider<TodoOverViewBloc>(
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.fromWindow(WidgetsBinding.instance.window)
.platformBrightness ==
Brightness.light) {
theme = lightTheme;
} else {
theme = darkTheme;
}
break;
}
return BlocBuilder<LanguageCubit, Locale>(
builder: (context, Locale locale) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Tasks',
theme: ThemeData(
primarySwatch: Colors.blue,
),
theme: theme,
home: const TodoOverViewPage(),
localizationsDelegates: const [
AppLocalizations.delegate,
Expand All @@ -72,7 +117,9 @@ class App extends StatelessWidget {
],
);
},
)),
);
}),
),
);
}
}
4 changes: 2 additions & 2 deletions lib/language/ui/language_page.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:todo/app_localizations.dart';
import 'package:todo/language/model/language.dart';
import 'package:todo/language/ui/widget/language_list_tile.dart';
import 'package:todo/language/ui/widget/language_list_tile_select.dart';
import 'package:todo/util/string_extension.dart';

class LanguageItem {
Expand Down Expand Up @@ -38,7 +38,7 @@ class LanguagePage extends StatelessWidget {
child: ListView.builder(
itemCount: languages.length,
itemBuilder: (context, index) {
return LanguageListTile(language: languages[index]);
return LanguageListTileSelect(language: languages[index]);
},
),
),
Expand Down
36 changes: 0 additions & 36 deletions lib/language/ui/widget/language_list_tile.dart

This file was deleted.

45 changes: 45 additions & 0 deletions lib/language/ui/widget/language_list_tile_select.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:todo/language/cubit/language_cubit.dart';
import 'package:todo/language/ui/language_page.dart';
import 'package:todo/util/string_extension.dart';

class LanguageListTileSelect extends StatelessWidget {
final LanguageItem language;
const LanguageListTileSelect({required this.language, super.key});

@override
Widget build(BuildContext context) {
bool selected = false;
if (context.read<LanguageCubit>().state == Locale(language.code.name)) {
selected = true;
}
return Theme(
data: ThemeData(
splashColor: Colors.transparent,
),
child: ListTile(
trailing: selected
? Icon(Icons.check, color: Theme.of(context).colorScheme.secondary)
: null,
title: Padding(
padding: const EdgeInsets.only(left: 16),
child: Text(
language.name.toString().capitalize(),
style: TextStyle(
fontWeight: FontWeight.w600,
color: Theme.of(context)
.textTheme
.bodyText1!
.color!
.withOpacity(0.9),
),
),
),
onTap: () {
context.read<LanguageCubit>().change(language.code);
},
),
);
}
}
2 changes: 2 additions & 0 deletions lib/settings/ui/setting_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:package_info_plus/package_info_plus.dart';
import 'package:todo/app_localizations.dart';
import 'package:todo/constants/app_about.dart' as constants;
import 'package:todo/settings/ui/widgets/widgets.dart';
import 'package:todo/settings/ui/widgets/theme_list_tile.dart';

import 'package:todo/util/string_extension.dart';

Expand Down Expand Up @@ -43,6 +44,7 @@ class _SettingsPageState extends State<SettingsPage> {
Expanded(
child: ListView(
children: <Widget>[
const ThemeListTile(),
const LanguageListTile(),
if (Platform.isAndroid) const RateListTile(),
const ShareListTile(),
Expand Down
1 change: 1 addition & 0 deletions lib/settings/ui/widgets/language_list_tile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class LanguageListTile extends StatelessWidget {
MaterialPageRoute(builder: ((context) => LanguagePage())),
);
},
trailing: const Icon(Icons.arrow_forward_ios_rounded),
);
}

Expand Down
54 changes: 54 additions & 0 deletions lib/settings/ui/widgets/theme_list_tile.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
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';

class ThemeListTile extends StatelessWidget {
const ThemeListTile({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return ListTile(
leading: const Icon(Icons.brightness_6),
title: Text(
AppLocalizations.of(context).translate("theme").capitalize(),
),
subtitle: const SubtitleTheme(),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const ThemePage()),
);
},
trailing: const Icon(Icons.arrow_forward_ios_rounded),
);
}
}

class SubtitleTheme extends StatelessWidget {
const SubtitleTheme({super.key});

@override
Widget build(BuildContext context) {
return BlocBuilder<ThemeCubit, AppTheme>(
builder: (context, state) {
String text;
switch (state) {
case AppTheme.light:
text = AppLocalizations.of(context).translate("light");
break;
case AppTheme.dark:
text = AppLocalizations.of(context).translate("dark");
break;
case AppTheme.system:
text = AppLocalizations.of(context).translate("system");
break;
}
return Text(text.capitalize());
},
);
}
}
7 changes: 4 additions & 3 deletions lib/subtask/ui/subtask_over_view_list_tile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ class SubtaskOverViewListTile extends StatelessWidget {
color: _getCheckboxBorderColor(context, subtask),
width: 2,
),
checkedColor: Theme.of(context).primaryColor,
uncheckedColor: Colors.transparent,
checkedColor: Theme.of(context).colorScheme.primary,
onTap: (bool? value) {
if (value == null) {
return;
Expand All @@ -64,7 +65,7 @@ class SubtaskOverViewListTile extends StatelessWidget {
focusNode: focusNodes,
controller: controller,
style: TextStyle(
color: subtask.complete ? Colors.grey : Colors.black,
color: subtask.complete ? Colors.grey : null,
fontStyle:
subtask.complete ? FontStyle.italic : FontStyle.normal,
decoration:
Expand Down Expand Up @@ -102,7 +103,7 @@ class SubtaskOverViewListTile extends StatelessWidget {

Color _getCheckboxBorderColor(BuildContext context, Subtask subtask) {
if (subtask.complete) {
return Theme.of(context).primaryColor;
return Theme.of(context).colorScheme.primary;
} else {
return Colors.grey;
}
Expand Down
Loading

0 comments on commit 2903baf

Please sign in to comment.