@@ -24,11 +24,50 @@ class SettingsPage extends StatelessWidget {
2424 appBar: ZulipAppBar (
2525 title: Text (zulipLocalizations.settingsPageTitle)),
2626 body: Column (children: [
27+ _BrowserPreferenceSetting (),
2728 _ThemeSetting (),
2829 ]));
2930 }
3031}
3132
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+
3271class _ThemeSetting extends StatefulWidget {
3372 const _ThemeSetting ();
3473
0 commit comments