gpt4 book ai didi

firebase - Firestore数据更改结果在flutter中为空

转载 作者:行者123 更新时间:2023-12-03 04:40:50 25 4
gpt4 key购买 nike

集合名称为userInfo,我要更新的数据为名称。
但是,当我使用textfield onChanged值执行此操作时,update方法会将集合文档中的值更改为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()方法来重建小部件树,但是由于您在 nameChange方法中声明了 build(),因此在单击 FlatButton时它将具有相同的初始值。您应该在该类下声明为实例变量:
class _EditNameState extends State<EditName> {
String nameChange = "6767";
//...

关于firebase - Firestore数据更改结果在flutter中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63240671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com