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!
);
},
);
}
}