Flutter文本大小

o4tp2gmn  于 2023-11-21  发布在  Flutter
关注(0)|答案(2)|浏览(159)

我想有一个按钮,将在我的整个应用程序的字体大小调整.我想改变每一个文本的大小从100%的大小,我已经有200%. Android的辅助功能已经做到了这一点. Android有“fint大小”改变它会调整我的应用程序中的每一个文本.我需要一个按钮,将做类似的事情.
https://support.google.com/accessibility/android/answer/11183305?hl=en

zi8p0yeb

zi8p0yeb1#

您可以使用MediaQuery Package 应用程序

MediaQuery(
      data: MediaQuery.of(context).copyWith(
        textScaleFactor: myTextScaleFactor, //1 - 100%, 1.5 - 150% ... etc
      ),
      child: Container(),
    );

字符串
按下按钮时更改textScaleFactor并将其传递给此小部件。

n6lpvg4x

n6lpvg4x2#

您可以使用以下代码覆盖默认行为。

import 'package:flutter/material.dart';

void main() {
  runApp(
    MaterialApp(
      theme: ThemeData.from(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.purple),
        useMaterial3: true,
      ),
      home: const Home(),
    ),
  );
}

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

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {
  double? _textScaleFactor;

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    _textScaleFactor ??= 1.0;
  }

  @override
  Widget build(BuildContext context) {
    return MediaQuery(
      data: MediaQuery.of(context)
          .copyWith(textScaler: TextScaler.linear(_textScaleFactor ?? 1.0)),
      child: Scaffold(
        appBar: AppBar(
          title: const Text('Text Scaling'),
          actions: [
            IconButton(
                onPressed: () {
                  setState(() {
                    _textScaleFactor = (_textScaleFactor ?? 1.0) + 0.1;
                  });
                },
                icon: const Icon(Icons.arrow_upward)),
            IconButton(
              onPressed: () {
                setState(() {
                  _textScaleFactor = (_textScaleFactor ?? 1.0) - 0.1;
                });
              },
              icon: const Icon(Icons.arrow_downward),
            )
          ],
        ),
        body: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Builder(builder: (context) {
                return Text(
                    'Scaling factor: ${MediaQuery.of(context).textScaler}');
              }),
              const Text(
                'Hello World',
                style: TextStyle(fontSize: 20),
              ),
              ElevatedButton(onPressed: () {}, child: const Text('Button'))
            ],
          ),
        ),
      ),
    );
  }
}

字符串

相关问题