我在我的flutter应用程序上工作时得到这个null安全错误。
The argument type 'TextStyle?' can't be assigned to the parameter type 'TextStyle'.
下面是抛出这个错误的代码片段:
ButtonStyle(textStyle: MaterialStateProperty.all<TextStyle>(Theme.of(context).textTheme.button))
VS Code建议将not操作符放在参数的末尾。
ButtonStyle(textStyle: MaterialStateProperty.all<TextStyle>(Theme.of(context).textTheme.button!))
问题:使用是个好习惯吗?在我的代码和其他可能的解决方案,在这种情况下?
如果为材质TextStyle导入了错误的库,也会出现此错误。
当您使用:
import 'dart:ui';
代替:
import 'package:flutter/material.dart';
材料状态属性表示依赖于部件的材料状态的值。状态被编码为一组MaterialState值,就像MaterialState一样。专注,MaterialState。徘徊,MaterialState.pressed。比如墨水瓶。overlayColor定义了当墨水被按下("飞溅色")、聚焦或悬停时填充墨水的颜色。InkWell使用叠加颜色的解析方法来计算墨水瓶当前状态的颜色。
你可以只使用Theme of context来使用Theme textStyle,像这样:
Text("copied text theme",
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.button)
在Buildcontext中初始化你的样式,示例:
var _styleType = Theme.of(context)
.textTheme
.body1
.copyWith(color: Colors.white);
然后将其应用于小部件:
Container(
margin: EdgeInsets.symmetric(vertical: 10),
child: new Text("u00a9 TasnuvaOshin",
overflow: TextOverflow.ellipsis,
style: _styleType),
),
MaterialStateTextStyle.resolveWith((states) =>TextStyle(字形大小:12),
可以使用。resolveWith从MaterialPropertyResolver回调函数创建MaterialStateTextStyle的方法。