@@ -24,11 +24,50 @@ class SettingsPage extends StatelessWidget {
24
24
appBar: ZulipAppBar (
25
25
title: Text (zulipLocalizations.settingsPageTitle)),
26
26
body: Column (children: [
27
+ _BrowserPreferenceSetting (),
27
28
_ThemeSetting (),
28
29
]));
29
30
}
30
31
}
31
32
33
+ class _BrowserPreferenceSetting extends StatefulWidget {
34
+ const _BrowserPreferenceSetting ();
35
+
36
+ @override
37
+ State <_BrowserPreferenceSetting > createState () => _BrowserPreferenceSettingState ();
38
+ }
39
+
40
+ class _BrowserPreferenceSettingState extends State <_BrowserPreferenceSetting > {
41
+ late bool useExternalBrowser;
42
+
43
+ @override
44
+ void didChangeDependencies () {
45
+ super .didChangeDependencies ();
46
+ useExternalBrowser =
47
+ GlobalStoreWidget .of (context).globalSettings.effectiveBrowserPreference
48
+ == BrowserPreference .external ;
49
+ }
50
+
51
+ void _handleChange (bool useExternalBrowser) {
52
+ GlobalStoreWidget .of (context).updateGlobalSettings (
53
+ GlobalSettingsCompanion (browserPreference: Value (
54
+ useExternalBrowser ? BrowserPreference .external
55
+ : BrowserPreference .embedded)));
56
+ setState (() {
57
+ this .useExternalBrowser = useExternalBrowser;
58
+ });
59
+ }
60
+
61
+ @override
62
+ Widget build (BuildContext context) {
63
+ final zulipLocalizations = ZulipLocalizations .of (context);
64
+ return SwitchListTile .adaptive (
65
+ title: Text (zulipLocalizations.settingsUseExternalBrowser),
66
+ value: useExternalBrowser,
67
+ onChanged: _handleChange);
68
+ }
69
+ }
70
+
32
71
class _ThemeSetting extends StatefulWidget {
33
72
const _ThemeSetting ();
34
73
0 commit comments