3 个不稳定版本
0.2.0 | 2024年7月3日 |
---|---|
0.1.1 | 2024年5月14日 |
0.1.0 | 2024年5月14日 |
#72 in 国际化 (i18n)
每月257次下载
在 hello_egui 中使用
110KB
413 行
egui_form
egui_form 为 egui 添加表单验证功能。它可以使用 validator 或 garde 进行验证。这也意味着,如果您使用 Rust,您可以在服务器和客户端上使用相同的验证逻辑。
请查看validator 实现或garde 实现的文档以开始。
您还可以通过为所使用的任何表单验证crate实现EguiValidationReport
来构建自定义实现。
展示
您可以在 hello_egui 展示应用中尝试签到表单示例。
此外,这里还有 HelloPaint 个人资料表单的屏幕截图
我应该使用 validator 还是 garde?
对于小型/原型项目,我建议使用 garde,因为它具有内置的错误消息。对于可能需要 i18n 的较大项目,可能更有意义使用 validator,因为它允许自定义错误消息(目前 garde 没有i18n支持)。
在 HelloPaint 中,我使用 garde,因为它看起来更干净,更活跃,希望 i18n 会在它成为 HelloPaint 问题之前得到解决。
使用 garde 的最小示例
use eframe::NativeOptions;
use egui::{TextEdit, Ui};
use egui_form::garde::{GardeReport, field_path};
use egui_form::{Form, FormField};
use garde::Validate;
#[derive(Debug, Default, Validate)]
struct Fields {
#[garde(length(min = 2, max = 50))]
user_name: String,
}
fn form_ui(ui: &mut Ui, fields: &mut Fields) {
let mut form = Form::new().add_report(GardeReport::new(fields.validate(&())));
FormField::new(&mut form, field_path!("user_name"))
.label("User Name")
.ui(ui, TextEdit::singleline(&mut fields.user_name));
if let Some(Ok(())) = form.handle_submit(&ui.button("Submit"), ui) {
println!("Submitted: {:?}", fields);
}
}
依赖项
~4–11MB
~103K SLoC