【问题标题】:Flutter best practice for form submissionsFlutter 表单提交最佳实践
【发布时间】:2022-11-22 22:23:39
【问题描述】:

我很难找到关于 Flutter 开发最佳实践的好资源,特别是表单处理。

我在表单提交上发现的一切都相当清楚,但问题是它们都直接在表单小部件中具有验证逻辑和提交逻辑。我不喜欢这个,因为它似乎会很快变得非常复杂,超过 3 个输入和任何超过基本验证逻辑的类型。它似乎也违反了关注点分离,认为我认为在 Flutter/Dar 中应该是一件大事(至少从我读过的内容来看)。

所以我为此选择的解决方案是我在 form_handler.dart 文件中定义的 FormHandler 类。它有一些用于验证输入的静态方法,一些用于提交处理的方法,以及一个 Map<String, dynamic> 类型的 formInput 用于存储用户输入的键值对。

它是这样工作的:

  1. 创建了一个 FormHandler 实例
  2. 用户输入数据
  3. 在 form.save() 上,对于每个用户输入,输入数据都存储在 formInput 映射中,键是输入的标题,值是用户的输入。
  4. 提交按钮将运行验证和保存功能,然后从 formInput 中获取数据并将其发送到数据库处理程序之类的东西,将其存储在数据库中

    form_handler.dart:

    class FormHandler {
      // make new form handler with empty map
      FormHandler({required this.formInput});
    
    
      // for storing input key value pairs
      Map<String, dynamic> formInput;
    
    
    
    
      // Form submissions
      // new course
      void submitCourse({required formKey}){
        final form = formKey.currentState;
    
        // save on validate
        if( form.validate() ){
          form.save();
    
          // then make new course via the database controller
        }
      }
    
      // Input validations
      static String? validateTextInput(String? input){
        if( input == null || input.isEmpty ){
            return 'Field must not be empty';
        } else {
          return null;
        }
      }
    }
    

    我只是想知道这是否是一个好的解决方案,有哪些潜在的陷阱,有什么建议等。

    这对我来说似乎是一个很好的解决方案,但我希望得到比我更有经验的人的反馈。

    谢谢,赛斯。

【问题讨论】:

    标签: flutter forms dart validation form-submit


    【解决方案1】:

    您可以参考此 youtube 频道以获取指导。 这是与 TextFields 和验证相关的视频链接 - https://youtu.be/2rn3XbBijy4

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-03
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 2011-12-26
      相关资源
      最近更新 更多