Skip to content

Commit a1225dd

Browse files
committed
Unify settings dialog with other linwood apps
1 parent d855907 commit a1225dd

File tree

19 files changed

+1026
-569
lines changed

19 files changed

+1026
-569
lines changed

app/lib/api/settings.dart

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import 'dart:ui';
2+
3+
import 'package:flow/pages/settings/home.dart';
4+
import 'package:flutter/material.dart';
5+
6+
Future<void> openSettings(BuildContext context) => showGeneralDialog<void>(
7+
context: context,
8+
pageBuilder: (context, animation, secondaryAnimation) =>
9+
ScaffoldMessenger(
10+
child: BackdropFilter(
11+
filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5),
12+
child: Dialog(
13+
clipBehavior: Clip.antiAlias,
14+
child: ConstrainedBox(
15+
constraints:
16+
const BoxConstraints(maxHeight: 800, maxWidth: 1000),
17+
child: const SettingsPage(isDialog: true))),
18+
),
19+
),
20+
barrierDismissible: true,
21+
barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel,
22+
transitionDuration: const Duration(milliseconds: 200),
23+
transitionBuilder: (context, animation, secondaryAnimation, child) {
24+
// Animate the dialog from bottom to center
25+
return SlideTransition(
26+
position: Tween<Offset>(
27+
begin: const Offset(0, 1),
28+
end: Offset.zero,
29+
).chain(CurveTween(curve: Curves.easeOutQuart)).animate(animation),
30+
child: child,
31+
);
32+
},
33+
);

app/lib/cubits/settings.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:collection/collection.dart';
44
import 'package:dart_mappable/dart_mappable.dart';
55
import 'package:flutter/material.dart';
66
import 'package:flutter_bloc/flutter_bloc.dart';
7+
import 'package:material_leap/material_leap.dart';
78
import 'package:shared_preferences/shared_preferences.dart';
89

910
import '../api/storage/remote/model.dart';
@@ -25,9 +26,10 @@ enum ThemeDensity {
2526
}
2627

2728
@MappableClass()
28-
class FlowSettings with FlowSettingsMappable {
29+
class FlowSettings with FlowSettingsMappable, LeapSettings {
2930
final String locale;
3031
final ThemeMode themeMode;
32+
@override
3133
final bool nativeTitleBar;
3234
final String design;
3335
final SyncMode syncMode;
@@ -86,7 +88,8 @@ enum SyncMode { always, noMobile, manual }
8688

8789
enum SyncStatus { synced, syncing, error }
8890

89-
class SettingsCubit extends Cubit<FlowSettings> {
91+
class SettingsCubit extends Cubit<FlowSettings>
92+
with LeapSettingsBlocBaseMixin<FlowSettings> {
9093
SettingsCubit(SharedPreferences prefs) : super(FlowSettings.fromPrefs(prefs));
9194

9295
Future<void> changeThemeMode(ThemeMode mode) {

app/lib/l10n/app_en.arb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,5 +299,15 @@
299299
"systemLocale": "System locale",
300300
"notebooks": "Notebooks",
301301
"createNotebook": "Create notebook",
302-
"editNotebook": "Edit notebook"
302+
"editNotebook": "Edit notebook",
303+
"update": "Update",
304+
"currentVersion": "Current version",
305+
"checkForUpdates": "Check for updates",
306+
"checkForUpdatesWarning": "Performing a check for updates will connect to the Butterfly website to get the information.",
307+
"usingLatestStable": "You are using the latest stable version",
308+
"usingLatestNightly": "You are using the latest nightly version",
309+
"updateNow": "Update now",
310+
"stable": "Stable",
311+
"nightly": "Nightly",
312+
"updateAvailable": "Update available"
303313
}

app/lib/main.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import 'package:dynamic_color/dynamic_color.dart';
55
import 'package:flow/cubits/flow.dart';
66
import 'package:flow/api/storage/sources.dart';
77
import 'package:flow/pages/calendar/filter.dart';
8+
import 'package:flow/pages/settings/home.dart';
89
import 'package:flow/theme.dart';
910
import 'package:flow/widgets/navigation.dart';
1011
import 'package:flow_api/helpers/setup.dart';
@@ -17,6 +18,7 @@ import 'package:flow/src/generated/i18n/app_localizations.dart';
1718
import 'package:flutter_web_plugins/url_strategy.dart';
1819
import 'package:material_leap/l10n/leap_localizations.dart';
1920
import 'package:flow_api/models/model.dart';
21+
import 'package:package_info_plus/package_info_plus.dart';
2022
import 'package:shared_preferences/shared_preferences.dart';
2123
import 'package:flutter_localized_locales/flutter_localized_locales.dart';
2224
import 'package:window_manager/window_manager.dart';
@@ -28,7 +30,6 @@ import 'pages/dashboard/page.dart';
2830
import 'pages/sources/page.dart';
2931
import 'pages/resources/page.dart';
3032
import 'pages/groups/page.dart';
31-
import 'pages/settings/page.dart';
3233
import 'pages/users/filter.dart';
3334
import 'pages/users/page.dart';
3435

@@ -199,3 +200,10 @@ const isNightly =
199200
flavor == 'nightly' || flavor == 'dev' || flavor == 'development';
200201
const shortApplicationName = isNightly ? 'Flow Nightly' : 'Flow';
201202
const applicationName = 'Linwood $shortApplicationName';
203+
204+
Future<String> getCurrentVersion() async {
205+
const envVersion = String.fromEnvironment('version');
206+
if (envVersion.isNotEmpty) return envVersion;
207+
final info = await PackageInfo.fromPlatform();
208+
return info.version;
209+
}

app/lib/pages/settings/content.dart

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import 'package:flow/pages/settings/contents/information.dart';
2-
import 'package:flow/pages/settings/contents/legal.dart';
3-
import 'package:flow/pages/settings/contents/personalization.dart';
4-
import 'package:flow/pages/settings/contents/data.dart';
1+
import 'package:flow/pages/settings/general.dart';
2+
import 'package:flow/pages/settings/legal.dart';
3+
import 'package:flow/pages/settings/personalization.dart';
4+
import 'package:flow/pages/settings/data.dart';
55
import 'package:flutter/material.dart';
66

77
class SettingsContent extends StatelessWidget {
@@ -13,9 +13,9 @@ class SettingsContent extends StatelessWidget {
1313
return Column(
1414
children: [
1515
...[
16-
const DataSettingsView(),
17-
const PersonalizationSettingsView(),
18-
const InformationSettingsView(),
16+
const DataSettingsPage(),
17+
const PersonalizationSettingsPage(),
18+
const GeneralSettingsPage(),
1919
const LegalSettingsView()
2020
].asMap().entries.map((e) => Container(
2121
key: itemKeys[e.key],

app/lib/pages/settings/contents/data.dart

Lines changed: 0 additions & 79 deletions
This file was deleted.

app/lib/pages/settings/contents/information.dart

Lines changed: 0 additions & 63 deletions
This file was deleted.

app/lib/pages/settings/contents/legal.dart

Lines changed: 0 additions & 40 deletions
This file was deleted.

0 commit comments

Comments
 (0)