flutter - ParentDataWidget 的错误使用 - 行和容器
问题描述
我正在尝试构建一个带有一行的容器。在这一行中,我想要 4 个图标。
如果我这样做了,我的问题是我收到错误“不正确使用 ParentDataWidget”。
我找不到问题出在哪里。如果您能帮我解决这个问题,我们将不胜感激。非常感谢。
Card(
child:
Container(
// color: Colors.red,
alignment: Alignment.center,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children:[
//Time
FlatButton(
child:
InkWell(
child: Container(
// color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.timer),
Text('Time'),
],
)
),
onTap: () {
print("Tapped on Time");
},
),
),
//Energy
FlatButton(
child:
InkWell(
child: Expanded(
child: Container(
// color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.battery_charging_full),
Text('Energy'),
],
)
),
),
onTap: () { },
),
),
//Important
FlatButton(
child:
InkWell(
child: Expanded(
child: Container(
// color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
isImportant =="true" ? Icon(Icons.star,color: Colors.orange,) :
Icon(Icons.star_border, color: Colors.grey,),
// Icon(Icons.battery_charging_full),
Text('Important'),
],
)
),
),
onTap: () {
setState(() {
if (isImportant=='true'){
isImportant = 'false';}
else
{isImportant= 'true';
}
});
},
),
),
//Urgent
FlatButton(
child:
InkWell(
child: Expanded(
child: Container(
// color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
isUrgent =="true" ? Icon(Icons.flag,color: Colors.red,) :
Icon(Icons.outlined_flag, color: Colors.grey,),
// Icon(Icons.battery_charging_full),
Text('Urgent'),
],
)
),
),
onTap: () {
setState(() {
if (isUrgent=='true'){
isUrgent = 'false';}
else
{isUrgent= 'true';
}
});
},
),
),
],
),
)),
解决方案
您正在使用无法使用的扩展小部件。Expanded 小部件的父级只能是 Flex 小部件。展开的小部件必须是 Row、Column 或 Flex 小部件的子级。
因此,您必须从扩展小部件的父级不是行、列或 Flex 的所有地方删除扩展小部件。例如,在下面的代码中,Expanded 小部件是 FlatButton 的子组件,因此您必须从此处删除 Expanded。
FlatButton(
child:
InkWell(
>>>>>>>>> child: Expanded( <<<<< REMOVE FROM HERE
child: Container(
// color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.battery_charging_full),
Text('Energy'),
],
)
),
),
onTap: () { },
),
),
请参考 Flutter 文档:扩展类
展开
扩展 Row、Column 或 Flex 的子项以使子项填充可用空间的小部件。
使用 Expanded 小部件使 Row、Column 或 Flex 的子项展开以填充沿主轴的可用空间(例如,水平的 Row 或垂直的 Column)。如果展开多个子节点,则可用空间根据弹性因子在它们之间分配。
Expanded 小部件必须是 Row、Column 或 Flex 的后代,并且从 Expanded 小部件到其封闭的 Row、Column 或 Flex 的路径必须仅包含 StatelessWidget 或 StatefulWidget(而不是其他类型的小部件,如 RenderObjectWidgets)。
推荐阅读
- python - 如何提取dict中的数据并逐行打印出来?
- ios - 将自定义 UIView 类添加到自定义 UICollectionViewCell 有不同的结果
- python - 如何避免一行文本限制或对我的代码有任何建议..请
- google-drive-api - Google Drive API 的 Google Data Studio 权限列表不准确
- python - 什么时候应该为 python 属性定义 getter 方法?
- javascript - 如何创建加载“模块”的函数
- python - tensorflow-cpu - ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 int)
- javascript - Im getting my coordinates but the state of 'data' isnt updating
- reactjs - Magento Bootstrap React Modal 手动打开
- apache-nifi - 输出键为输入值的 Jolt shift 规范