【发布时间】:2022-11-22 22:23:39
【问题描述】:
我很难找到关于 Flutter 开发最佳实践的好资源,特别是表单处理。
我在表单提交上发现的一切都相当清楚,但问题是它们都直接在表单小部件中具有验证逻辑和提交逻辑。我不喜欢这个,因为它似乎会很快变得非常复杂,超过 3 个输入和任何超过基本验证逻辑的类型。它似乎也违反了关注点分离,认为我认为在 Flutter/Dar 中应该是一件大事(至少从我读过的内容来看)。
所以我为此选择的解决方案是我在 form_handler.dart 文件中定义的 FormHandler 类。它有一些用于验证输入的静态方法,一些用于提交处理的方法,以及一个 Map<String, dynamic> 类型的 formInput 用于存储用户输入的键值对。
它是这样工作的:
- 创建了一个 FormHandler 实例
- 用户输入数据
- 在 form.save() 上,对于每个用户输入,输入数据都存储在 formInput 映射中,键是输入的标题,值是用户的输入。
- 提交按钮将运行验证和保存功能,然后从 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