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) {
  return r"""
`documents/designs/widget_design.md`に記載されている`Widget設計書`と`lib/widgets`に作成されているDartファイルを参照して`Widget`のロジックを実装
`documents/designs/widget_design.md`が存在しない場合は絶対に実施しない

`Widget設計書`に記載されている各`Widget`の`WidgetType`に応じてそれぞれ下記を実行

## `stateless`

実施しない

## `stateful`

1. 対象のDartファイル(`lib/widgets`以下に[WidgetName(SnakeCase&末尾のWidgetを取り除く)].dart)を開く
2. `Widget設計書`の`Content`に応じて`build`メソッド内の`// TODO: Implement the variable loading process.`以下に`ref`を用いてプロジェクト内の各種`Model`や`Controller`を取得する。
  - 適宜`import`を追加する
  - `Model`や`Controller`の取得方法は下記を参照。
      - `Model`や`Controller`の取得方法(`documents/rules/docs/state_management_usage.md`)
      - `Model`の利用方法(`documents/rules/docs/model_usage.md`)
  - 例:
      ```dart
      // TODO: Implement the variable loading process.
      final memoController = ref.app.controller(MemoController.query());
      final memoCollection = ref.app.model(MemoModel.collection())..load();
      final memoState = ref.page.watch((_) => ValueNotifier<bool>(false));
      ```

## `model_extension`

実施しない

- FlutterやMasamuneの実装方法の詳細や細かい制約については`documents/rules/**/*.md`を参照
""";
}