Flutter自定义主题在真机不生效,模拟器正常如何解决?
解决方案
1. 预加载Google字体
模拟器会自动缓存字体,但真机需要显式预加载才能确保字体正确加载。在main函数中添加预加载逻辑:
void main() async { // 预加载Roboto字体 await GoogleFonts.pendingFonts([ GoogleFonts.roboto(), ]); runApp(const MyApp()); }
2. 正确配置主题的textTheme
单独设置headline1可能导致字体加载逻辑失效,建议基于GoogleFonts生成的textTheme进行扩展:
ThemeData buildTheme() { return ThemeData( textTheme: GoogleFonts.robotoTextTheme().copyWith( headline1: GoogleFonts.roboto( color: Colors.black38, fontSize: 22, fontWeight: FontWeight.w700, height: 1, ), ), ); }
然后在MaterialApp中应用该主题:
MaterialApp( theme: buildTheme(), home: const HomePage(), );
3. 清理真机缓存或重装应用
如果上述方法无效,可能是真机的应用缓存残留旧字体样式:
- 卸载应用后重新安装
- 进入手机设置清除该应用的缓存数据
4. 验证上下文的正确性
确保调用Theme.of(context)的组件处于MaterialApp的子树中,没有被其他Theme组件覆盖自定义主题。
内容的提问来源于stack exchange,提问作者Anuradha
相关产品推荐
相关产品推荐

