对于颤振是全新的,并且面临一些问题rn,我有一个文本字段,我在某个字符串中输入了内容,然后我通过TextEditingController保存了输入内容,接下来我想在另一个屏幕上显示输入内容,但是发生了什么我的情况是,每次更改屏幕时,TextEdditingcontroller.text值都会重置,
issue,它在控制台中打印输入值,但是将空白字符串发送到新屏幕。因此当执行https://github.com/0x-xsh/studentchat/blob/master/lib/ProblemList.dart第19行时,它将返回错误。 我试图在第142行做一个setState,但问题相同。
答案 0 :(得分:1)
我会在我们的List<Problem>
类中添加一个ProblemList
参数。
然后,当我们导航到我们的ProblemList页面时,可以传递此列表,并使用以下命令进行访问:
class ProblemList extends StatefulWidget {
final List<Problem> pList;
const ProblemList({this.pList});
@override
ProblemListState createState() => ProblemListState();
}
class ProblemListState extends State<ProblemList> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("My Problems"),
leading: Icon(Icons.list),
),
body: Text(widget.pList[0].desc), //<-------- This is where you access the list
),
);
}
}
第142行变为:
onPressed: () {
Problem problem = new Problem(problemDescription.text, problemDetails.text);
problems.add(problem);
print(problems[0].desc);
Navigator.push(context,
MaterialPageRoute(builder: (context) =>
ProblemList(pList: problems))); //<----- Passing the list to the class
},
答案 1 :(得分:0)
您无法像在ProblemList.dart
中那样访问其他页面的状态...
您需要将列表作为参数传递给ProblemList。
尝试在ProblemList类中声明一个List<Problem> problems;
,将此变量添加到类构造函数中,并在NewProblem.dart
的第147行中发送列表。
此外,您的代码是一团糟...文件有一个名称,而类有另一个名称..非常令人困惑... 始终尝试对文件和类使用正确的命名约定。这将帮助您和任何试图帮助您的人:)
https://dart.dev/guides/language/effective-dart/style
当您对Flutter有了更好的了解后,我建议您学习Flutter的状态管理。有很多方法。查看一些选项,然后选择最适合您项目需求的选项...