From cce628c06b2125fa9ba9b1e0281a36b5c7234d8d Mon Sep 17 00:00:00 2001 From: Eric Windmill Date: Wed, 6 Aug 2025 12:31:05 -0400 Subject: [PATCH] adjust text size --- cupertino_gallery/lib/gallery_home.dart | 6 ++++ cupertino_gallery/lib/main.dart | 35 ++++++++++++++++++++++-- cupertino_gallery/lib/settings_page.dart | 28 +++++++++++++++---- cupertino_gallery/test/widget_test.dart | 23 +--------------- 4 files changed, 61 insertions(+), 31 deletions(-) diff --git a/cupertino_gallery/lib/gallery_home.dart b/cupertino_gallery/lib/gallery_home.dart index c86fd73a2..b5a407567 100644 --- a/cupertino_gallery/lib/gallery_home.dart +++ b/cupertino_gallery/lib/gallery_home.dart @@ -7,10 +7,14 @@ class GalleryHome extends StatelessWidget { super.key, required this.onThemeChange, required this.isDarkMode, + required this.onTextSizeChange, + required this.textSize, }); final ValueChanged onThemeChange; final bool isDarkMode; + final ValueChanged onTextSizeChange; + final double textSize; @override Widget build(BuildContext context) { @@ -35,6 +39,8 @@ class GalleryHome extends StatelessWidget { 1 => SettingsPage( onThemeChange: onThemeChange, isDarkMode: isDarkMode, + onTextSizeChange: onTextSizeChange, + textSize: textSize, ), _ => const Center(child: Text('Widgets')), }; diff --git a/cupertino_gallery/lib/main.dart b/cupertino_gallery/lib/main.dart index 167075488..934796db8 100644 --- a/cupertino_gallery/lib/main.dart +++ b/cupertino_gallery/lib/main.dart @@ -20,6 +20,7 @@ class CupertinoGalleryApp extends StatefulWidget { class _CupertinoGalleryAppState extends State { ThemeMode _themeMode = ThemeMode.system; + double _textSize = 1.0; void _handleThemeChange(bool isDarkMode) { setState(() { @@ -27,16 +28,44 @@ class _CupertinoGalleryAppState extends State { }); } + void _handleTextSizeChange(double newTextSize) { + setState(() { + _textSize = newTextSize; + }); + } + @override Widget build(BuildContext context) { + final baseTheme = CupertinoThemeData( + brightness: + _themeMode == ThemeMode.dark ? Brightness.dark : Brightness.light, + ); + final textTheme = baseTheme.textTheme.copyWith( + textStyle: + baseTheme.textTheme.textStyle.copyWith(fontSize: 14 * _textSize), + actionTextStyle: baseTheme.textTheme.actionTextStyle + .copyWith(fontSize: 14 * _textSize), + tabLabelTextStyle: baseTheme.textTheme.tabLabelTextStyle + .copyWith(fontSize: 10 * _textSize), + navTitleTextStyle: baseTheme.textTheme.navTitleTextStyle + .copyWith(fontSize: 17 * _textSize), + navLargeTitleTextStyle: baseTheme.textTheme.navLargeTitleTextStyle + .copyWith(fontSize: 34 * _textSize), + navActionTextStyle: baseTheme.textTheme.navActionTextStyle + .copyWith(fontSize: 17 * _textSize), + pickerTextStyle: baseTheme.textTheme.pickerTextStyle + .copyWith(fontSize: 21 * _textSize), + dateTimePickerTextStyle: baseTheme.textTheme.dateTimePickerTextStyle + .copyWith(fontSize: 21 * _textSize), + ); return CupertinoApp( title: 'Cupertino Gallery', - theme: CupertinoThemeData( - brightness: _themeMode == ThemeMode.dark ? Brightness.dark : Brightness.light, - ), + theme: baseTheme.copyWith(textTheme: textTheme), home: GalleryHome( onThemeChange: _handleThemeChange, isDarkMode: _themeMode == ThemeMode.dark, + onTextSizeChange: _handleTextSizeChange, + textSize: _textSize, ), ); } diff --git a/cupertino_gallery/lib/settings_page.dart b/cupertino_gallery/lib/settings_page.dart index 8fb85db1d..59a4b3c73 100644 --- a/cupertino_gallery/lib/settings_page.dart +++ b/cupertino_gallery/lib/settings_page.dart @@ -5,29 +5,39 @@ class SettingsPage extends StatefulWidget { super.key, required this.onThemeChange, required this.isDarkMode, + required this.onTextSizeChange, + required this.textSize, }); final ValueChanged onThemeChange; final bool isDarkMode; + final ValueChanged onTextSizeChange; + final double textSize; @override State createState() => _SettingsPageState(); } class _SettingsPageState extends State { - double _textSize = 1.0; late bool isDarkMode; + late double _textSize; @override void initState() { - isDarkMode = widget.isDarkMode; super.initState(); + isDarkMode = widget.isDarkMode; + _textSize = widget.textSize; } @override - void didChangeDependencies() { - isDarkMode = widget.isDarkMode; - super.didChangeDependencies(); + void didUpdateWidget(SettingsPage oldWidget) { + super.didUpdateWidget(oldWidget); + if (widget.isDarkMode != oldWidget.isDarkMode) { + isDarkMode = widget.isDarkMode; + } + if (widget.textSize != oldWidget.textSize) { + _textSize = widget.textSize; + } } @override @@ -58,10 +68,13 @@ class _SettingsPageState extends State { ), CupertinoSlider( value: _textSize, + min: 0.5, + max: 1.5, onChanged: (double value) { setState(() { _textSize = value; }); + widget.onTextSizeChange(value); }, ), ], @@ -107,8 +120,10 @@ class _SettingsPageState extends State { child: const Text('Reset'), onPressed: () { setState(() { - widget.onThemeChange(false); + isDarkMode = false; _textSize = 1.0; + widget.onThemeChange(false); + widget.onTextSizeChange(1.0); }); Navigator.pop(context); }, @@ -125,3 +140,4 @@ class _SettingsPageState extends State { ); } } + diff --git a/cupertino_gallery/test/widget_test.dart b/cupertino_gallery/test/widget_test.dart index 96889cd01..2a2b81928 100644 --- a/cupertino_gallery/test/widget_test.dart +++ b/cupertino_gallery/test/widget_test.dart @@ -5,25 +5,4 @@ // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text, and verify that the values of widget properties are correct. -import 'package:cupertino_gallery/gallery_home.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const GalleryHome()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} +void main() {}