如何解决Flutter:如何将用户反馈从反馈表单发布到 Firestore 数据库
我是 Flutter 的新手,并试图从下面的反馈表单中将用户反馈捕获到 Firestore 数据库,并将其显示在一个单独的屏幕上,该屏幕从数据库中读取并显示用户反馈报告?
class FeedbackScreen extends StatefulWidget {
static const String routeName = 'Feedback_screen';
@override
_FeedbackScreenState createState() => _FeedbackScreenState();
}
class _FeedbackScreenState extends State<FeedbackScreen> {
List<String> _questions = [
'Question 1','Question 2 ','Question 3','Question 4'
];
List<int> _FeedbackValue = [];
List<bool> _isFormFieldComplete = [];
String additionalComments;
@override
void initState() {
super.initState();
for (int i = 0; i < _questions.length; ++i) {
_FeedbackValue.add(-1);
_isFormFieldComplete.add(false);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
getTranslated(context,"Feedback_screen"),),body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20.0,vertical: 20.0),child: Column(
crossAxisAlignment: CrossAxisAlignment.start,children: [
Text(
'Please choose appropriate emoji icon for your response',style: kFeedbackFormFieldTextStyle,textAlign: TextAlign.center,SizedBox(
height: 10.0,Text(
getTranslated(context,"tons_emoji"),"alot_emoji"),"soso_emoji"),"notgood_emoji"),Divider(
height: 25.0,]
..addAll(
_questions.asMap().entries.map((entry) {
return FeedbackFormField(
id: entry.key + 1,question: entry.value,groupValue: _FeedbackValue[entry.key],radioHandler: (int value) =>
_handleRadioButton(entry.key,value),error: _isFormFieldComplete[entry.key]
? 'This is a required field'
: null,);
}),)
..addAll([
SizedBox(
height: 10.0,TextField(
decoration: kFeedbackFormFielddecoration.copyWith(
hintText: 'Additional Comments (Optional)',maxLines: 5,onChanged: (value) => additionalComments = value,SizedBox(
height: 20.0,Row(
mainAxisAlignment: MainAxisAlignment.center,children: [
CustomraisedButton(
save: handleSubmitFeedback,title: 'Submit',],]),);
}
void _handleRadioButton(int group,int value) {
setState(() {
_FeedbackValue[group] = value;
_isFormFieldComplete[group] = false;
});
}
void handleSubmitFeedback() {
bool complete = true;
for (int i = 0; i < _FeedbackValue.length; ++i) {
if (_FeedbackValue[i] == -1) {
complete = false;
_isFormFieldComplete[i] = true;
} else {
_isFormFieldComplete[i] = false;
}
}
setState(() {});
if (complete == true) {
print(_FeedbackValue);
print(additionalComments);
Navigator.pushReplacementNamed(context,SessionTwoScreen.routeName);
}
}
}
解决方法
你可以尝试创建一个这样的函数:
final firestoreInstance = FirebaseFirestore.instance;
void _onPressed(){
firestoreInstance.collection("users").add(
{
"userName" : "johnDoe",...otherFields
}
}).then((_){
print("data added successfully!");
});
}
您可以检查 documentation 以查看相同的详细示例。同样来自文档“默认情况下,Firestore 引用操作 Map
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。