Сохраняйте размер шрифта приложения, даже если размер шрифта устройства изменяется во 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.
Я хочу сохранить размер шрифта приложения, даже если в настройках устройства есть изменения, не затрагивая другие виджеты, например, когда TextFormField получает фокус, а затем после этого экземпляра появляется клавиатура.
Кто-нибудь знает, как я могу добиться масштабирования текста с помощью 1, не влияя на поведение других виджетов?
Любая помощь будет оценена по достоинству.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-flutte
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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