[英]Firestore data change results is null in flutter
集合名称是 userInfo & 我要更新的数据是名称。 但是当我使用文本字段 onChanged 值执行此操作时,更新方法会将集合文档中的值更改为 null 值。
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:hindusofindia/model/user.dart';
import 'package:hindusofindia/screens/user/UserProfile.dart';
class EditName extends StatefulWidget {
EditName({this.email});
final String email;
@override
_EditNameState createState() => _EditNameState();
}
class _EditNameState extends State<EditName> {
void _changeName(String value) async {
Firestore.instance
.collection("userInfo")
.document(widget.email)
.updateData({"name": value});
}
@override
Widget build(BuildContext context) {
String nameChange='6767';
return Scaffold(
appBar: AppBar(
title: Text('Edit Name'),
flexibleSpace: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: <Color>[
Colors.orange,
Colors.red,
],
),
),
),
),
body: Column(
children: <Widget>[
TextField(
decoration: InputDecoration(
border: OutlineInputBorder(),
labelText: 'Edit Name',
),
onChanged: (text) {
setState(() {
nameChange = text;
});
},
),
FlatButton(
onPressed: () {
if (nameChange != '6767') {
_changeName(nameChange);
}
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => UserScreen(
currentUser: User(email: widget.email),
),
),
);
},
child: Text('Apply changes'),
)
],
),
);
}
}
但应该发生的是文本字段名称更改导致将 firebase 文档集合中的名称值更新为文本字段值。 稍后按下 flatbutton 后会发生变化。
onChanged: (text) {
setState(() {
nameChange = text;
});
setState()
将再次调用build()
方法来重建小部件树,但是由于您在build()
方法中声明了nameChange
,因此在单击FlatButton
时它将具有相同的初始值。 你应该在class下声明为一个实例变量:
class _EditNameState extends State<EditName> {
String nameChange = "6767";
//...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.