flutter - 使用自定义小部件在列表中给出错误
问题描述
我创建了一个名为“ BigCard ”的自定义小部件。现在,当我在 List 数组中使用它时,在 InputPage.dart 文件中出现错误。错误说->元素类型“BigCard”不能分配给列表类型“Widget”。
Main.dart 文件->
void main() => runApp(BMICalculator());
class BMICalculator extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(
primaryColor: Color(0xFFfbe0c4),
scaffoldBackgroundColor: Color(0xFFff8303),
),
home: InputPage(),
);
}
}
InputPage.dart 文件->
class InputPage extends StatefulWidget {
@override
_InputPageState createState() => _InputPageState();
}
class _InputPageState extends State<InputPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('BMI CALCULATOR'),
),
body: Column(
children: [
Expanded(
child: Row(children: [
BigCard(
a: Colors.black38,
b: TextIcon(a: 'MALE', b: FontAwesomeIcons.mars),
),
BigCard(
a: Colors.blueGrey,
b: TextIcon(a: 'FEMALE', b: FontAwesomeIcons.venus),
),
]),
),
Expanded(
child: Row(
children: [],
)),
Expanded(
child: Row(
children: [
BigCard(),
BigCard(),
],
)),
Container(
color: Color(0xFFEB1555),
margin: EdgeInsets.only(top: 10.0),
height: 80,
width: double.infinity,
),
],
));
}
}
TextIcon.dart 文件->
class TextIcon {
String a;
IconData b;
TextIcon({this.a, this.b});
Column repe() {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
b,
size: 80,
),
SizedBox(
height: 15,
),
Text(
a,
style: TextStyle(
fontSize: 18,
color: Color(0xFF8D8E98),
),
)
],
);
}
}
BigCard.dart 文件->
class BigCard {
Color a;
TextIcon b;
BigCard({this.a, this.b});
Expanded repeat({Color a, Widget b}) {
return Expanded(
child: Container(
child: b,
margin: EdgeInsets.all(15),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: a,
),
),
);
}
}
请帮忙。
解决方案
制作 BigCard 如下
class BigCard extends StatelessWidget {
Color a;
TextIcon b;
BigCard({this.a, this.b});
@override
Widget build(BuildContext context) {
return Expanded(
child: Container(
child: b,
margin: EdgeInsets.all(15),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: a,
),
),
);
}
}
推荐阅读
- python - 属性错误:无法获取属性“BrainSet”
在朱庇特 - git - 一个实例中的 IntelliJ Git 结帐损坏了另一个实例中打开的项目
- python - 函数递归 TypeError 中的 DataFrame.duplicated() 错误:duplicated() 为参数“keep”获取了多个值
- java - JTA中事务管理器的具体流程是什么
- c# - 如何节省统一花费的最少时间?
- azure-active-directory - MS Teams Bot:对于来自 BotBuilder-Samples 的 Teams 对话机器人,网络聊天中的测试未经授权
- javascript - 打算在完全执行的其他 js 文件中加载 JQuery 一次函数
- typescript - 当值已设置为 false 时,是否需要在 typescript 中指定数据类型 boolean?
- wpf - WPF:单击时不会关闭列表框或菜单(在 Telerik Splitbutton 内)
- swift - RxSwift:如何响应一系列通知?