Flutter中SliverAppBar使用Google Fonts报非const构造函数错误如何解决
报错原因
你给FlexibleSpaceBar加了const修饰符,要求整个组件在编译期就确定为常量,但GoogleFonts.acme()方法生成的字体样式是运行时动态构造的,没有const构造函数,不满足常量编译要求,因此触发报错。你注释掉GoogleFonts用普通Text的默认样式时,样式是编译期可确定的常量,所以不会报错。
解决方案
直接删除FlexibleSpaceBar前面的const修饰符即可,代码修改后如下:
SliverAppBar( pinned: true, snap: false, floating: false, expandedHeight: 200.0, leading: IconButton( color: Colors.black38, icon: Icon(Icons.arrow_back), onPressed: () { Navigator.pushReplacementNamed( context, '/'); }, ), backgroundColor: Globals().appBar, // 移除此处的const修饰符 flexibleSpace: FlexibleSpaceBar( title: Text('Inventory', style: GoogleFonts.acme(color: Globals().white_text,fontSize: 20),) , background: FittedBox(fit:BoxFit.cover,child: Image(image:AssetImage('images/bag.jpg'))), ), ),
如果需要保留const优化,也可以在全局ThemeData中提前配置AppBar的文本样式为Google Fonts的acme字体,此时SliverAppBar的Text无需单独指定style,也可保留const修饰符。
内容的提问来源于stack exchange,提问作者Waseem Ahmed
相关产品推荐
相关产品推荐

