Это код, который я использовал в 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(),
),
);
}
Код: Выделить всё
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(),
// ),
);
}
[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 получает фокус, а затем после этого экземпляра появляется клавиатура.
Кто-нибудь знает, как я могу добиться масштабирования текста с помощью 1, не влияя на поведение других виджетов?
Любая помощь будет оценена по достоинству.
Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-flutte