mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
fix: reopen the application lost the theme (#3254)
This commit is contained in:
parent
e9f31ea0f8
commit
ea37128359
2
frontend/.vscode/launch.json
vendored
2
frontend/.vscode/launch.json
vendored
@ -24,7 +24,7 @@
|
|||||||
"program": "./lib/main.dart",
|
"program": "./lib/main.dart",
|
||||||
"type": "dart",
|
"type": "dart",
|
||||||
"env": {
|
"env": {
|
||||||
"RUST_LOG": "trace",
|
"RUST_LOG": "debug",
|
||||||
},
|
},
|
||||||
"cwd": "${workspaceRoot}/appflowy_flutter"
|
"cwd": "${workspaceRoot}/appflowy_flutter"
|
||||||
},
|
},
|
||||||
|
2
frontend/.vscode/tasks.json
vendored
2
frontend/.vscode/tasks.json
vendored
@ -279,7 +279,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "AF: Generate Env",
|
"label": "AF: Generate Env File",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "dart run build_runner clean && dart run build_runner build --delete-conflicting-outputs ",
|
"command": "dart run build_runner clean && dart run build_runner build --delete-conflicting-outputs ",
|
||||||
"options": {
|
"options": {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import 'package:appflowy/plugins/document/presentation/more/cubit/document_appearance_cubit.dart';
|
import 'package:appflowy/plugins/document/presentation/more/cubit/document_appearance_cubit.dart';
|
||||||
import 'package:appflowy_editor/appflowy_editor.dart' hide Log;
|
import 'package:appflowy_editor/appflowy_editor.dart' hide Log;
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
|
import 'package:flowy_infra/theme.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:appflowy_backend/log.dart';
|
import 'package:appflowy_backend/log.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart';
|
import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart';
|
||||||
@ -28,6 +29,7 @@ class InitAppWidgetTask extends LaunchTask {
|
|||||||
final app = ApplicationWidget(
|
final app = ApplicationWidget(
|
||||||
key: ValueKey(context),
|
key: ValueKey(context),
|
||||||
appearanceSetting: appearanceSetting,
|
appearanceSetting: appearanceSetting,
|
||||||
|
appTheme: await appTheme(appearanceSetting.theme),
|
||||||
child: widget,
|
child: widget,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -73,16 +75,18 @@ class InitAppWidgetTask extends LaunchTask {
|
|||||||
class ApplicationWidget extends StatelessWidget {
|
class ApplicationWidget extends StatelessWidget {
|
||||||
final Widget child;
|
final Widget child;
|
||||||
final AppearanceSettingsPB appearanceSetting;
|
final AppearanceSettingsPB appearanceSetting;
|
||||||
|
final AppTheme appTheme;
|
||||||
|
|
||||||
const ApplicationWidget({
|
const ApplicationWidget({
|
||||||
Key? key,
|
Key? key,
|
||||||
required this.child,
|
required this.child,
|
||||||
|
required this.appTheme,
|
||||||
required this.appearanceSetting,
|
required this.appearanceSetting,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final cubit = AppearanceSettingsCubit(appearanceSetting)
|
final cubit = AppearanceSettingsCubit(appearanceSetting, appTheme)
|
||||||
..readLocaleWhenAppLaunch(context);
|
..readLocaleWhenAppLaunch(context);
|
||||||
|
|
||||||
return MultiBlocProvider(
|
return MultiBlocProvider(
|
||||||
@ -137,3 +141,16 @@ class ApplicationBlocObserver extends BlocObserver {
|
|||||||
// super.onEvent(bloc, event);
|
// super.onEvent(bloc, event);
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<AppTheme> appTheme(String themeName) async {
|
||||||
|
if (themeName.isEmpty) {
|
||||||
|
return AppTheme.fallback;
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
return await AppTheme.fromName(themeName);
|
||||||
|
} catch (e) {
|
||||||
|
Log.error(e);
|
||||||
|
return AppTheme.fallback;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -22,11 +22,13 @@ const _white = Color(0xFFFFFFFF);
|
|||||||
class AppearanceSettingsCubit extends Cubit<AppearanceSettingsState> {
|
class AppearanceSettingsCubit extends Cubit<AppearanceSettingsState> {
|
||||||
final AppearanceSettingsPB _setting;
|
final AppearanceSettingsPB _setting;
|
||||||
|
|
||||||
AppearanceSettingsCubit(AppearanceSettingsPB setting)
|
AppearanceSettingsCubit(
|
||||||
: _setting = setting,
|
AppearanceSettingsPB setting,
|
||||||
|
AppTheme appTheme,
|
||||||
|
) : _setting = setting,
|
||||||
super(
|
super(
|
||||||
AppearanceSettingsState.initial(
|
AppearanceSettingsState.initial(
|
||||||
setting.theme,
|
appTheme,
|
||||||
setting.themeMode,
|
setting.themeMode,
|
||||||
setting.font,
|
setting.font,
|
||||||
setting.monospaceFont,
|
setting.monospaceFont,
|
||||||
@ -203,7 +205,7 @@ class AppearanceSettingsState with _$AppearanceSettingsState {
|
|||||||
}) = _AppearanceSettingsState;
|
}) = _AppearanceSettingsState;
|
||||||
|
|
||||||
factory AppearanceSettingsState.initial(
|
factory AppearanceSettingsState.initial(
|
||||||
String themeName,
|
AppTheme appTheme,
|
||||||
ThemeModePB themeModePB,
|
ThemeModePB themeModePB,
|
||||||
String font,
|
String font,
|
||||||
String monospaceFont,
|
String monospaceFont,
|
||||||
@ -212,7 +214,7 @@ class AppearanceSettingsState with _$AppearanceSettingsState {
|
|||||||
double menuOffset,
|
double menuOffset,
|
||||||
) {
|
) {
|
||||||
return AppearanceSettingsState(
|
return AppearanceSettingsState(
|
||||||
appTheme: AppTheme.fallback,
|
appTheme: appTheme,
|
||||||
font: font,
|
font: font,
|
||||||
monospaceFont: monospaceFont,
|
monospaceFont: monospaceFont,
|
||||||
themeMode: _themeModeFromPB(themeModePB),
|
themeMode: _themeModeFromPB(themeModePB),
|
||||||
|
@ -25,7 +25,10 @@ void main() {
|
|||||||
|
|
||||||
blocTest<AppearanceSettingsCubit, AppearanceSettingsState>(
|
blocTest<AppearanceSettingsCubit, AppearanceSettingsState>(
|
||||||
'default theme',
|
'default theme',
|
||||||
build: () => AppearanceSettingsCubit(appearanceSetting),
|
build: () => AppearanceSettingsCubit(
|
||||||
|
appearanceSetting,
|
||||||
|
AppTheme.fallback,
|
||||||
|
),
|
||||||
verify: (bloc) {
|
verify: (bloc) {
|
||||||
// expect(bloc.state.appTheme.info.name, "light");
|
// expect(bloc.state.appTheme.info.name, "light");
|
||||||
expect(bloc.state.font, 'Poppins');
|
expect(bloc.state.font, 'Poppins');
|
||||||
@ -36,7 +39,10 @@ void main() {
|
|||||||
|
|
||||||
blocTest<AppearanceSettingsCubit, AppearanceSettingsState>(
|
blocTest<AppearanceSettingsCubit, AppearanceSettingsState>(
|
||||||
'save key/value',
|
'save key/value',
|
||||||
build: () => AppearanceSettingsCubit(appearanceSetting),
|
build: () => AppearanceSettingsCubit(
|
||||||
|
appearanceSetting,
|
||||||
|
AppTheme.fallback,
|
||||||
|
),
|
||||||
act: (bloc) {
|
act: (bloc) {
|
||||||
bloc.setKeyValue("123", "456");
|
bloc.setKeyValue("123", "456");
|
||||||
},
|
},
|
||||||
@ -47,7 +53,10 @@ void main() {
|
|||||||
|
|
||||||
blocTest<AppearanceSettingsCubit, AppearanceSettingsState>(
|
blocTest<AppearanceSettingsCubit, AppearanceSettingsState>(
|
||||||
'remove key/value',
|
'remove key/value',
|
||||||
build: () => AppearanceSettingsCubit(appearanceSetting),
|
build: () => AppearanceSettingsCubit(
|
||||||
|
appearanceSetting,
|
||||||
|
AppTheme.fallback,
|
||||||
|
),
|
||||||
act: (bloc) {
|
act: (bloc) {
|
||||||
bloc.setKeyValue("123", null);
|
bloc.setKeyValue("123", null);
|
||||||
},
|
},
|
||||||
@ -58,7 +67,10 @@ void main() {
|
|||||||
|
|
||||||
blocTest<AppearanceSettingsCubit, AppearanceSettingsState>(
|
blocTest<AppearanceSettingsCubit, AppearanceSettingsState>(
|
||||||
'initial state uses fallback theme',
|
'initial state uses fallback theme',
|
||||||
build: () => AppearanceSettingsCubit(appearanceSetting),
|
build: () => AppearanceSettingsCubit(
|
||||||
|
appearanceSetting,
|
||||||
|
AppTheme.fallback,
|
||||||
|
),
|
||||||
verify: (bloc) {
|
verify: (bloc) {
|
||||||
expect(bloc.state.appTheme.themeName, AppTheme.fallback.themeName);
|
expect(bloc.state.appTheme.themeName, AppTheme.fallback.themeName);
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user