From a842403f58385a53ebed2e78902ab92e559ab2db Mon Sep 17 00:00:00 2001 From: MritunjayTiwari14 Date: Fri, 24 Oct 2025 14:18:17 +0530 Subject: [PATCH] settings: Make page scrollable Fixes #1904. --- lib/widgets/settings.dart | 2 +- test/widgets/settings_test.dart | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/widgets/settings.dart b/lib/widgets/settings.dart index 5995cdcbfe..bad16c336b 100644 --- a/lib/widgets/settings.dart +++ b/lib/widgets/settings.dart @@ -20,7 +20,7 @@ class SettingsPage extends StatelessWidget { return Scaffold( appBar: ZulipAppBar( title: Text(zulipLocalizations.settingsPageTitle)), - body: Column(children: [ + body: ListView(children: [ const _ThemeSetting(), const _BrowserPreferenceSetting(), const _VisitFirstUnreadSetting(), diff --git a/test/widgets/settings_test.dart b/test/widgets/settings_test.dart index e889fa0d3d..81374597be 100644 --- a/test/widgets/settings_test.dart +++ b/test/widgets/settings_test.dart @@ -64,6 +64,24 @@ void main() { hasCheckedState: true, isChecked: expectedIsChecked); } + group('SettingsPage scroll behavior', () { + testWidgets('content is scrollable when taller than a screenful', (tester) async { + tester.view.physicalSize = const Size(200, 200); + tester.view.devicePixelRatio = 1.0; + addTearDown(tester.view.reset); + await prepare(tester); + + final lastElementFinder = GlobalSettingsStore.experimentalFeatureFlags.isNotEmpty + ? find.text("Experimental features") + : find.text("Mark messages as read on scroll"); + check(lastElementFinder).findsNothing(); + + await tester.scrollUntilVisible(lastElementFinder, 100, + scrollable: find.byType(Scrollable)); + check(lastElementFinder).findsOne(); + }); + }); + group('ThemeSetting', () { void checkThemeSetting(WidgetTester tester, { required ThemeSetting? expectedThemeSetting,