我想做的事:当用户想要更改其在应用程序上的名称时,用户将修改:当用户显示这个屏幕时,已经在这个文本框中输入了他的名字。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']),
)
],
),
),
),
);
}
}
1条答案
按热度按时间wj8zmpe11#
删除
decoration
并将_namecon.text = userData['username']
添加到build
中,同时将TextEditingController _namecon = TextEditingController()
从build
中取出