Flutter:如何将用户反馈从反馈表单发布到 Firestore 数据库

如何解决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 对象。缺点是我们失去了类型安全性。”所以你可以输入你的参考文献,如图here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?