flutter - 在颤动中更新页面上的数据
问题描述
我刚开始学习 Dart 和 Flutter。我的 main.dart 文件的 listview 小部件中有数据。我正在向其中添加一个数据,并且我有一个 StudentAdd 类。这是我的代码,但是如果不单击屏幕,我的页面上的数据不会自动更新。当我运行代码时,我的新数据不会显示在列表视图中。我的错误是什么?
提前感谢您的回答。
import 'package:flutter/material.dart';
import 'package:temel_widget/models/student.dart';
import 'package:temel_widget/validation/student_validator.dart';
class StudentAdd extends StatefulWidget {
List<Student> students;
StudentAdd(List<Student> students) {
this.students = students;
}
@override
State<StatefulWidget> createState() {
return _StudentAddState(students);
}
}
class _StudentAddState extends State with StudentValidationMixin {
List<Student> students;
var student = Student.withoutInfo();
var formKey = GlobalKey<
FormState>();
_StudentAddState(List<Student> students) {
this.students = students;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Yeni Öğrenci Ekle"),
),
body: Container(
margin: EdgeInsets.all(20.0),
child: Form(
key: formKey,
child: Column(
children: <Widget>[
buildFirstNameField(),
buildLastNameField(),
buildGradeField(),
buildSubmitButton(),
],
)),
));
}
Widget buildFirstNameField() {
return TextFormField(
decoration:
InputDecoration(labelText: "Öğrenci Adı:", hintText: "isim girin"),
validator: validateFirstName,
onSaved: (String value) {
student.firstName = value;
},
);
}
Widget buildLastNameField() {
return TextFormField(
decoration:
InputDecoration(labelText: "Öğrenci Soyadı:", hintText: "soyisim girin"),
validator: validateLastName,
onSaved: (String value) {
student.lastName = value;
},
);
}
Widget buildGradeField() {
return TextFormField(
decoration: InputDecoration(labelText: "Aldığı Not:", hintText: "0"),
validator: validateGrade,
onSaved: (String value) {
student.grade = int.parse(value);
},
);
}
Widget buildSubmitButton() {
return RaisedButton(
child: Text("KAYDET"),
onPressed: () {
if (formKey.currentState.validate()) {
formKey.currentState.save();
saveStudent();
students.add(student);
Navigator.pop(context);
}
},
);
}
void saveStudent() {
print(student.firstName);
print(student.lastName);
print(student.grade);
}
}
解决方案
是的,这是因为添加数据的代码没有写在setState((){})
块下。通过执行以下操作重试:
setState((){
formKey.currentState.save();
saveStudent();
students.add(student);
});
推荐阅读
- python - Python 数据抓取:用一系列 href 和 prettify 抓取标题不起作用
- python - TensorFlow 多类分类损失
- sql-server - Sql Server 代理作业中的包在 Integration Services 目录中成功时失败
- polymer - 使用特定 tensorboard 的 Web 组件的推荐方法是什么?
- amazon-web-services - 指标过滤器分辨率
- unity3d - 更改材质所依赖的纹理属性后,是否必须再次将纹理添加回材质中?
- maven - Maven 配置文件继承
- bash - 未正确测试条件
- plugins - PhpStorm Shopware 插件快捷方式“swconfig”不起作用
- sql - 关于 Select from (select...) 语句的说明