关于flutter:Flutter监听安卓系统字体变化监听安卓系统深色模式切换

Flutter通过弱小的MediaQuery控件做到监听前设施的信息及其设施信息的动态变化

参考:Flutter 弱小的MediaQuery控件
Flutter 小技巧之 MediaQuery 和 build 优化你不晓得的机密
MediaQuery妙用
Flutter官网文档 MediaQuery

一个简略的小案例

import 'package:flutter/material.dart';
import 'ui/HomePage.dart'; 

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      routes: {
        "/":(context) => const MyHomePage(title: '23') // 测试页面
      },
      initialRoute: '/',
      builder: (context, widget) {
        print('监听到安卓零碎字体大小变动');
        print(MediaQuery.of(context).textScaleFactor);
        print('监听到安卓零碎主题深色模式切换');
        print(MediaQuery.of(context).platformBrightness == Brightness.light ? '红色主题':'深色主题');
        return MediaQuery(
            // 设置全局文字缩放因子为默认1.0,文字大小不随零碎变动而扭转
            data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
            child: widget!
        );
      },
    );
  }
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理