【发布时间】:2020-10-06 03:59:30
【问题描述】:
错误:在构建主页时引发以下 NoSuchMethodError(脏,依赖项:[MediaQuery],状态:_HomeState#a6c1f): 在 null 上调用了方法“>”。 接收方:空 尝试调用:>(1)
我想在第二个输入框中获取多个值,并且输入的数量取决于用户,所以我创建了一个函数来返回带有文本表单字段的容器,每次我去时将值存储在不同的数组索引中错误
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
int buildings;
List<int> heights = [];
Widget getinput() {
for (var i = 1; i <= buildings; i++) {
return Container(
width: 325,
height: 60,
child: TextFormField(
keyboardType: TextInputType.number,
decoration: InputDecoration(
border: OutlineInputBorder(borderRadius: BorderRadius.circular(15)),
hintText: 'Enter height and press enter to type next',
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.white),
),
),
onFieldSubmitted: (String n) {
setState(() {
heights[i] = int.parse(n);
});
},
),
);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: SingleChildScrollView(
child: Container(
width: MediaQuery.of(context).size.width,
height: 341,
decoration: BoxDecoration(
gradient: LinearGradient(colors: [
Color.fromRGBO(223, 39, 17, 0.98),
Color.fromRGBO(245, 160, 25, 0.98)
], begin: Alignment.topRight, end: Alignment.bottomLeft),
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(30),
bottomRight: Radius.circular(30)),
boxShadow: [
BoxShadow(
color: Colors.black12,
spreadRadius: 5,
blurRadius: 5,
offset: Offset(1, 2))
]),
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
Row(
children: <Widget>[
SizedBox(
width: 278,
),
CircleAvatar(
radius: 25,
backgroundColor: Colors.transparent,
backgroundImage: AssetImage("assets/icon2.png"))
],
),
Row(
children: <Widget>[
Text(
"How many Buildings?",
style: TextStyle(
fontSize: 24,
color: Colors.white,
fontWeight: FontWeight.bold,
//fontStyle: FontStyle.italic,
fontFamily: 'MuseoModerno',
),
),
],
),
Container(
width: 325,
height: 60,
child: TextFormField(
keyboardType: TextInputType.number,
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(15)),
hintText: 'Enter Number of Buildings and press enter',
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.white),
),
),
onFieldSubmitted: (String n) {
setState(() {
buildings = int.parse(n);
});
},
),
),
Row(
children: <Widget>[
Text(
"Enter the Heights",
style: TextStyle(
fontSize: 22,
color: Colors.white,
fontWeight: FontWeight.bold,
//fontStyle: FontStyle.italic,
fontFamily: 'MuseoModerno',
),
),
],
),
getinput(),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 1),
child: ButtonTheme(
height: 55,
minWidth: 65,
child: RaisedButton(
elevation: 3,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30.0),
side: BorderSide(color: Colors.transparent)),
child: new Text(
"Initiate",
style: TextStyle(
color: Colors.white,
fontSize: 25,
fontFamily: "MuseoModerno",
fontWeight: FontWeight.bold),
),
color: Colors.black,
onPressed: () {},
),
),
)
],
)
],
),
),
),
));
}
}
【问题讨论】:
-
buildings 开头为空值,getinput() for 循环检查是否 i
标签: android arrays function flutter dart