Desktop-Enhancements (#1434)
* feat: Add minimum size for macos app * fix: Adjust font sizing and spaces in wallet list page and wallet selection dropdown
Adegoke David committed
May 6, 2024 at 20:14 UTC
cd41766e697a23f1d8c2945526825062daf573cd
6 files changed
+43
-4
cw_core/lib/window_size.dart
new
+22
@@ -0,0 +1,22 @@
1
+import 'dart:io';
2
+
3
+import 'package:flutter/services.dart';
4
+
5
+const MethodChannel _channel = MethodChannel('com.cake_wallet/native_utils');
6
+
7
+Future<void> setDefaultMinimumWindowSize() async {
8
+ if (!Platform.isMacOS) return;
9
+
10
+ try {
11
+ final result = await _channel.invokeMethod(
12
+ 'setMinWindowSize',
13
+ {'width': 500, 'height': 700},
14
+ ) as bool;
15
+
16
+ if (!result) {
17
+ print("Failed to set minimum window size.");
18
+ }
19
+ } on PlatformException catch (e) {
20
+ print("Failed to set minimum window size: '${e.message}'.");
21
+ }
22
+}
lib/main.dart
+3
@@ -41,6 +41,7 @@ import 'package:uni_links/uni_links.dart';
41
import 'package:cw_core/unspent_coins_info.dart';
42
import 'package:cake_wallet/monero/monero.dart';
43
import 'package:cw_core/cake_hive.dart';
44
+import 'package:cw_core/window_size.dart';
45
46
final navigatorKey = GlobalKey<NavigatorState>();
47
final rootKey = GlobalKey<RootState>();
@@ -60,6 +61,8 @@ Future<void> main() async {
61
return true;
62
};
63
64
+ await setDefaultMinimumWindowSize();
65
+
66
await CakeHive.close();
67
68
await initializeAppConfigs();
lib/src/screens/dashboard/desktop_widgets/dropdown_item_widget.dart
+1
-1
@@ -22,7 +22,7 @@ class DropDownItemWidget extends StatelessWidget {
22
child: Text(
23
title,
24
style: TextStyle(
25
- fontSize: 22,
25
+ fontSize: 18,
26
fontWeight: FontWeight.w500,
27
color: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
28
),
lib/src/screens/settings/desktop_settings/desktop_settings_page.dart
+1
-1
@@ -38,7 +38,7 @@ class _DesktopSettingsPageState extends State<DesktopSettingsPage> {
38
crossAxisAlignment: CrossAxisAlignment.start,
39
children: [
40
Padding(
41
- padding: const EdgeInsets.all(24),
41
+ padding: const EdgeInsets.fromLTRB(24, 24, 24, 4),
42
child: Text(
43
S.current.settings,
44
style: textXLarge(),
lib/src/screens/wallet_list/wallet_list_page.dart
+1
-1
@@ -171,7 +171,7 @@ class WalletListBodyState extends State<WalletListBody> {
171
maxLines: null,
172
softWrap: true,
173
style: TextStyle(
174
- fontSize: 20,
174
+ fontSize: DeviceInfo.instance.isDesktop ? 18 : 20,
175
fontWeight: FontWeight.w500,
176
color: Theme.of(context)
177
.extension<CakeTextTheme>()!
macos/Runner/AppDelegate.swift
+15
-1
@@ -24,7 +24,21 @@ class AppDelegate: FlutterAppDelegate {
24
}
25
26
result(secRandom(count: count))
27
-
27
+ case "setMinWindowSize":
28
+ guard let self = self else {
29
+ result(false)
30
+ return
31
+ }
32
+ if let arguments = call.arguments as? [String: Any],
33
+ let width = arguments["width"] as? Double,
34
+ let height = arguments["height"] as? Double {
35
+ DispatchQueue.main.async {
36
+ self.mainFlutterWindow?.minSize = CGSize(width: width, height: height)
37
+ }
38
+ result(true)
39
+ } else {
40
+ result(false)
41
+ }
42
default:
43
result(FlutterMethodNotImplemented)
44
}