在文本字段Flutter Dart中设置firebase数据

bnlyeluc  于 2022-11-25  发布在  Flutter
关注(0)|答案(1)|浏览(169)

我想做的事:当用户想要更改其在应用程序上的名称时,用户将修改:当用户显示这个屏幕时,已经在这个文本框中输入了他的名字。2他可以改变它。
例如:在图片中,用户要修改他的用户名他的firebase用户名是“default”。它已经被键入。他删除“t”并提交。

此处为我的代码

class ModifyScreen extends StatefulWidget {
      final String uid;
      const ModifyScreen({
        super.key,
        required this.uid,
      });
    
      @override
      State<ModifyScreen> createState() => _ModifyScreenState();
    }
    
    class _ModifyScreenState extends State<ModifyScreen> {
      var userData = {};
      bool isLoading = false;
    
      @override
      void initState() {
        getData();
        super.initState();
      }
    
      getData() async {
        
        try {
          var userSnap = await FirebaseFirestore.instance
              .collection('users')
              .doc(widget.uid)
              .get();
    
          userData = userSnap.data()!;
          setState(() {});
        } catch (e) {
          showSnackBar(
            context,
            e.toString(),
          );
        }
        
      }
    
      @override
      Widget build(BuildContext context) {
        TextEditingController _namecon = TextEditingController();
        return Scaffold(
                body: Padding(
                  padding: const EdgeInsets.all(18),
                  child: Center(
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        TextField(
                          controller: _namecon,
                          decoration:
                              InputDecoration(hintText: userData['username']),
                        )
                      ],
                    ),
                  ),
                ),
              );
      }
    }
wj8zmpe1

wj8zmpe11#

删除decoration并将_namecon.text = userData['username']添加到build中,同时将TextEditingController _namecon = TextEditingController()build中取出

相关问题