body method
Defines the actual body code. path
is passed relative to lib
, baseName
is the filename, and className
is the filename converted to Pascal case.
実際の本体コードを定義します。path
にlib
からの相対パス、baseName
にファイル名が渡され、className
にファイル名をパスカルケースに変換した値が渡されます。
Implementation
@override
String body(String baseName, String className) {
var header = r"""
ユーザーによる入力や選択を受け取るために利用可能な`Widget`である`Form`の一覧とその利用方法を下記に記載する。
## `Form`とは
`Form`はユーザーによる入力や選択を受け取るためのクラスである。
- `Form`は`FormController`を通して`State`によって管理される。
- `FormController`中の`valudate()`メソッドを実行することで各`Form`の`validate`プロパティや`onSave`プロパティの処理を実行し入力・選択された値の検証や保存を行うことができる。
- `FormStyle`を適用することでデザインを統一することができる。
## `Form`の一覧
| Class | Summary | Usage |
| --- | --- | --- |
""";
for (final entry in kFormList.entries) {
header +=
"| `${entry.key}` | ${entry.value.excerpt} | [Usage](mdc:.cursor/rules/form/${entry.key.toSnakeCase()}.mdc) |\n";
}
header += """
## `FormStyle`について
`FormStyle`は`Form`のスタイルを定義するためのクラスである。これを各`Form`に適用することで、デザインを統一することができる。
```dart
final formStyle = FormStyle(
padding: EdgeInsets.all(16.0),
borderRadius: BorderRadius.all(Radius.circular(8.0)),
backgroundColor: Colors.grey[200],
);
```
## `FormController`について
`FormController`は`Form`の状態を管理するためのクラスである。これを各`Form`に適用することで、`Form`の状態を管理することができる。`FormController`の取得は`Model`で定義された`form`メソッドを利用し`State`を通して取得する。
- [`Model`の実装方法](mdc:.cursor/rules/docs/model_usage.mdc)
- [`State`の利用方法](mdc:.cursor/rules/docs/state_usage.mdc)
```dart
final formController = ref.page.form(AnyModel.form(AnyModel()));
```
`FormController`の`validate()`メソッドを実行することで各`Form`の`validate`プロパティや`onSave`プロパティの処理を実行し入力・選択された値の検証や保存を行うことができる。
```dart
final value = formController.validate();
if(value == null){
// 入力された値が検証に通らなかった場合の処理
} else {
// 入力された値が検証に通った場合の処理
}
```
""";
return header;
}