Сохраняйте размер шрифта приложения, даже если размер шрифта устройства изменяется во Flutter. ⇐ Android

Форум для тех, кто программирует под Android
Anonymous
Сохраняйте размер шрифта приложения, даже если размер шрифта устройства изменяется во Flutter.

Сообщение Anonymous »

Это нерешенная проблема в моем текущем проекте Flutter. Сценарий таков: я пытался перехватить процесс Flutter при рендеринге пользовательского интерфейса со шрифтом, чтобы сохранить масштаб текста равным 1.
Это код, который я использовал в main. дротик:

Код: Выделить всё

void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(
MediaQuery(
data: MediaQueryData.fromView(
WidgetsBinding.instance.platformDispatcher.views.single)
.copyWith(
textScaler: const TextScaler.linear(
1)), //intercept font size changes from user's device
child: const TestFontScale(),
),
);
}
В моем классе TestFontScale:

Код: Выделить всё

class TestFontScale extends StatefulWidget {
const TestFontScale({super.key});

@override
State createState() => _TestFontScaleState();
}

class _TestFontScaleState extends State {

@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text(
"Hello World",
textDirection: TextDirection.ltr,
),
Container(
padding: const EdgeInsets.only(top: 8.0),
child: TextFormField(
decoration: const InputDecoration(
border: OutlineInputBorder(),
hintText: 'Put some text',
),
),
),
],
),
),
);
}
}
Сначала я изменяю размер шрифта в настройках устройства:
[img]https://i. sstatic.net/JfQ45J32.jpg[/img]

После изменения размера шрифта устройства:
Изображение

Затем я обработал скриншоты в фотошопе (т. е. выполнил простые настройки непрозрачности, чтобы сделать фон клавиатуры видимым). там), чтобы показать, что произошло:
Изображение

Но если я использую значение по умолчанию, при котором масштаб текста не перехватывается:

Код: Выделить всё

void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(
const TestFontScale(),
// MediaQuery(
//   data: MediaQueryData.fromView(
//           WidgetsBinding.instance.platformDispatcher.views.single)
//       .copyWith(
//           textScaler: const TextScaler.linear(
//               1)), //intercept font size changes from user's device
//   child: const TestFontScale(),
// ),
);
}
Вот ожидаемое поведение приложения (кроме размера шрифта XD):
[img]https:/ /i.sstatic.net/82Y548LT.jpg[/img]

Я заметил, что

Код: Выделить всё

MediaQuery(
data: MediaQueryData.fromView(
WidgetsBinding.instance.platformDispatcher.views.single)
.copyWith(
textScaler: const TextScaler.linear(
1)), //intercept font size changes from user's device
child: const MyApp(),
),
перехватывать, как должен вести себя другой виджет, например, как влияет на TextFormField, когда я устанавливаю приведенный выше код в main.dart.
Кто-нибудь знает, как я могу добиться масштабирования текста с помощью 1, не влияя на поведение других виджетов?
Любая помощь будет оценена по достоинству.>

Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-flutte

Вернуться в «Android»