Flutter监听安卓系统字体变化,监听安卓系统深色模式切换

Unix哲学
• 阅读 1463

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!
        );
      },
    );
  }
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
LinMeng LinMeng
4年前
vue的watch监听
vue的watch监听函数watch用来响应数据的变化,watch的用法大致有以下三种:1.监听某个变量watch:{name(newName,oldName){console.log(newName)//改变前的值console.log(oldName)//改变后的值
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Stella981 Stella981
3年前
Flutter获取Build完成状态监听 及每一帧绘制完成的监听
Flutter在Build完成后的监听和每一帧绘制完成后的监听这个是我们监听要用的重要的类WidgetsBinding官方是这么描述它的ThegluebetweenthewidgetslayerandtheFlutterengine.中文的意思是 控件层和Flutter引擎之间的粘合剂。就
Stella981 Stella981
3年前
Flutter 中的组件绘制完成监听、组件生命周期和APP生命周期
Flutter的生命周期说到Flutter的生命周期,其实就是说StatefulWidget的生命周期,因为StatelessWidget是静态控件。StatefulWidget,通过借助于State对象,处理状态变化,并体现在UI上。这些阶段,就涵盖了一个组件从加载到卸载的全过程,即生命周期。
Wesley13 Wesley13
3年前
03.视频播放器Api说明
03.视频播放器Api说明目录介绍01.最简单的播放02.如何切换视频内核03.切换视频模式04.切换视频清晰度05.视频播放监听06.列表中播放处理07.悬浮窗口播放08.其他重要功能Api09.播放多个视频10.
Stella981 Stella981
3年前
OkHttp请求耗时统计
目录介绍01.先提问一个问题02.EventListener回调原理03.请求开始结束监听04.dns解析开始结束监听05.连接开始结束监听06.TLS连接开始结束监听07.连接绑定和释放监听08.request请求监听09.response响应监听
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
3年前
Android检查设备是否可以访问互联网,判断Internet连接,测试网络请求,解析域名
安卓SDK提供了ConnectivityManager类,那么我们就可以轻松的获取设备的网络状态以及联网方式等信息。 但是要想知道安卓设备连接的网络能不能访问到Internet,就要费一番周折了。 本文为大家介绍三种方式来检查Internet连接状态。1、使用Linux系统pingip的命令方式检查设备的Internet连接状态。 2
铁扇公主 铁扇公主
2年前
MacDroid for mac(安卓设备文件传输助手) v1.6.1中文
MacDroid一款Mac平台上的安卓传输助手,它可以帮助用户在Mac电脑和安卓设备之间传输文件和文件夹。MacDroid支持通过USB连接或局域网连接进行传输。MacDroid具有多种功能,包括文件和文件夹的双向传输、安卓设备的远程文件管理、安卓设备的存