body method

  1. @override
String body(
  1. String baseName,
  2. String className
)
override

Defines the actual body code. path is passed relative to lib, baseName is the filename, and className is the filename converted to Pascal case.

実際の本体コードを定義します。pathlibからの相対パス、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;
}