无效的值:不在包容性范围0..4:5
我遇到了奇怪的错误。我想为列表中的每个单元格创建一个小部件,但是当我编写“ itemCount:smindtitle.length”时,我会有那个红色屏幕。 即使我只输入1、2或任何int编号,
第二个问题也是我有一个时间选择器,但是当我要输出输出的数字时,它仅显示随机数,例如0分钟,30hrs
import 'dart:io';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(debugShowCheckedModeBanner: false,
home: HomePage());
}
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
var RemindTitle = ["First", "Second", "Third", "Fourth", "sdf"],
RemindText = ["TexttF", "TextS", "TextT", "TextFr", "sdf"];
var Counter = -1;
DateTime? date;
TimeOfDay _time = TimeOfDay.now();
var DateText = "Enter the date", ChosenTime = " ";
bool AlreadyBuilt = false;
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
padding: EdgeInsets.all(20),
itemCount: RemindTitle.length,
itemBuilder: (BuildContext context, int index) {
if(AlreadyBuilt == false) {
AlreadyBuilt = true;
return Row(
children: [
Expanded(
flex: 4,
child: Container(
height: 75,
child: ElevatedButton(
child: Center(
child: Text("Add Remind"),
),
onPressed: () {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return Container(
child: Center(
child: Column(children: [
Row(
children: [
Padding(padding: EdgeInsets.all(10)),
Expanded(
child: ElevatedButton(
onPressed: () async {
date = await showDatePicker(
context: context,
initialDate:
new DateTime.now(),
firstDate:
new DateTime(2015),
lastDate:
new DateTime(2030),
);
},
child: Text("Enter the date"))),
Padding(padding: EdgeInsets.all(10)),
Expanded(
child: ElevatedButton(
onPressed: () async {
showTimePicker(
context: context,
initialTime:
TimeOfDay.now())
.then((value) {
setState(() {
_time = value!;
});
});
if (date != null) {
ChosenTime =
"Chosen time: " +
date!.day
.toString() +
":" +
date!.month
.toString() +
":" +
date!.year
.toString() +
", time: " + _time.minute.toString() +
":" +
_time.hour
.toString();
}
},
child: Text("Enter the time"))),
Padding(padding: EdgeInsets.all(10)),
],
),
Padding(padding: EdgeInsets.all(10)),
Text(ChosenTime)
]),
));
});
},
),
),
),
Padding(padding: EdgeInsets.fromLTRB(10, 0, 0, 0)),
Expanded(
flex: 4,
child: Container(
height: 75,
child: ElevatedButton(
onPressed: () {},
child: Center(
child: Text("Delete Remind"),
)),
),
)
],
);
}
if(Counter < RemindTitle.length){
Counter++;
}
return Container(
height: 130,
width: 175,
child: ElevatedButton(
onPressed: () {},
child: Center(
child: Column(
children: [
Padding(padding: EdgeInsets.fromLTRB(0, 10, 0, 10)),
Text(
RemindTitle[Counter],
style: TextStyle(fontSize: 20),
),
Padding(padding: EdgeInsets.fromLTRB(0, 10, 0, 10)),
Text(RemindText[Counter])
],
),
)),
padding: EdgeInsets.fromLTRB(0, 20, 0, 0),
);
}),
appBar: AppBar(
title: (Text("Reminder :)")),
centerTitle: true,
),
);
}
}
im getting strange error. I want to create a widget for every cell in a list, but when I write "itemCount: RemindTitle.length" I have that red screen.
It appears even when I enter just 1, 2 or any Int number
The second issue is that I have a Time Picker, but when I want to output numbers I've entered, it shows just random numbers, like 0 min, 30hrs
import 'dart:io';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(debugShowCheckedModeBanner: false,
home: HomePage());
}
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
var RemindTitle = ["First", "Second", "Third", "Fourth", "sdf"],
RemindText = ["TexttF", "TextS", "TextT", "TextFr", "sdf"];
var Counter = -1;
DateTime? date;
TimeOfDay _time = TimeOfDay.now();
var DateText = "Enter the date", ChosenTime = " ";
bool AlreadyBuilt = false;
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
padding: EdgeInsets.all(20),
itemCount: RemindTitle.length,
itemBuilder: (BuildContext context, int index) {
if(AlreadyBuilt == false) {
AlreadyBuilt = true;
return Row(
children: [
Expanded(
flex: 4,
child: Container(
height: 75,
child: ElevatedButton(
child: Center(
child: Text("Add Remind"),
),
onPressed: () {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return Container(
child: Center(
child: Column(children: [
Row(
children: [
Padding(padding: EdgeInsets.all(10)),
Expanded(
child: ElevatedButton(
onPressed: () async {
date = await showDatePicker(
context: context,
initialDate:
new DateTime.now(),
firstDate:
new DateTime(2015),
lastDate:
new DateTime(2030),
);
},
child: Text("Enter the date"))),
Padding(padding: EdgeInsets.all(10)),
Expanded(
child: ElevatedButton(
onPressed: () async {
showTimePicker(
context: context,
initialTime:
TimeOfDay.now())
.then((value) {
setState(() {
_time = value!;
});
});
if (date != null) {
ChosenTime =
"Chosen time: " +
date!.day
.toString() +
":" +
date!.month
.toString() +
":" +
date!.year
.toString() +
", time: " + _time.minute.toString() +
":" +
_time.hour
.toString();
}
},
child: Text("Enter the time"))),
Padding(padding: EdgeInsets.all(10)),
],
),
Padding(padding: EdgeInsets.all(10)),
Text(ChosenTime)
]),
));
});
},
),
),
),
Padding(padding: EdgeInsets.fromLTRB(10, 0, 0, 0)),
Expanded(
flex: 4,
child: Container(
height: 75,
child: ElevatedButton(
onPressed: () {},
child: Center(
child: Text("Delete Remind"),
)),
),
)
],
);
}
if(Counter < RemindTitle.length){
Counter++;
}
return Container(
height: 130,
width: 175,
child: ElevatedButton(
onPressed: () {},
child: Center(
child: Column(
children: [
Padding(padding: EdgeInsets.fromLTRB(0, 10, 0, 10)),
Text(
RemindTitle[Counter],
style: TextStyle(fontSize: 20),
),
Padding(padding: EdgeInsets.fromLTRB(0, 10, 0, 10)),
Text(RemindText[Counter])
],
),
)),
padding: EdgeInsets.fromLTRB(0, 20, 0, 0),
);
}),
appBar: AppBar(
title: (Text("Reminder :)")),
centerTitle: true,
),
);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是因为您的提示长度为5,您正在尝试访问第六项,而该项目不可用。时间也正确显示。但是,您首先显示会议分钟,而以24小时格式的小时和SETSTATE在模型中无法正常工作,显示您选择的任何时间,始终是您按下按钮的当前时间。
希望这能解决您的问题。
This is because your remindTitle length is 5 and you are trying to access the 6th item which is not available. And Time is also showing correctly. But you are displaying minutes at first and the hour which is in 24 hours format and setState is not working correctly inside the model, show whatever time you choose, it is always the current time when you press the button.
Hope this solves your problem.