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) {
return r"""
[widget_design.md](mdc:documents/designs/widget_design.md)に記載されている`Widget設計書`と`lib/widgets`に作成されているDartファイルを参照して`Widget`のUIを実装
[widget_design.md](mdc:documents/designs/widget_design.md)が存在しない場合は絶対に実施しない
## `stateless`
1. 対象のDartファイル(`lib/widgets`以下に[WidgetName(SnakeCase&末尾のWidgetを取り除く)].dart)を開く
2. `Widget設計書`の`Content`に応じて`build`メソッド内の`// TODO: Implement the view.`以下を書き換え、適切なUIを構築して返す。
- 適宜`import`を追加する
- クラスに定義されている変数や`build`メソッド内で定義されている変数を利用する
- 下記の`Widget`を優先的に利用する
- [`KatanaUI`の`Widget`](mdc:.cursor/rules/docs/katana_ui_usage.mdc)
- [`Flutter`の`Widget`](mdc:.cursor/rules/docs/flutter_widgets.mdc)
- [`Form`の`Widget`](mdc:.cursor/rules/docs/form_usage.mdc)
- `Router`を用いて別画面への遷移を行う。詳しくは[`Router`の利用方法](mdc:.cursor/rules/docs/router_usage.mdc)を参照
- `Theme`を利用する場合は`lib/theme.dart`にある`theme`を参照。詳しくは[`Theme`の利用方法](mdc:.cursor/rules/docs/theme_usage.mdc)を参照
- 例:
```dart
// TODO: Implement the view.
return Container(
child: Text('Hello, World!'),
);
```
## `stateful`
1. 対象のDartファイル(`lib/widgets`以下に[WidgetName(SnakeCase&末尾のWidgetを取り除く)].dart)を開く
2. `Widget設計書`の`Content`に応じて`build`メソッド内の`// TODO: Implement the view.`以下を書き換え、適切なUIを構築して返す。
- 適宜`import`を追加する
- クラスに定義されている変数や`build`メソッド内で定義されている変数を利用する
- 下記の`Widget`を優先的に利用する
- [`KatanaUI`の`Widget`](mdc:.cursor/rules/docs/katana_ui_usage.mdc)
- [`Flutter`の`Widget`](mdc:.cursor/rules/docs/flutter_widgets.mdc)
- [`Form`の`Widget`](mdc:.cursor/rules/docs/form_usage.mdc)
- `Router`を用いて別画面への遷移を行う。詳しくは[`Router`の利用方法](mdc:.cursor/rules/docs/router_usage.mdc)を参照
- `Theme`を利用する場合は`lib/theme.dart`にある`theme`を参照。詳しくは[`Theme`の利用方法](mdc:.cursor/rules/docs/theme_usage.mdc)を参照
- 例:
```dart
// TODO: Implement the view.
return Container(
child: Text('Hello, World!'),
);
```
## `model_extension`
1. `TargetModel`に対応する`lib/models/[TargetModelのModelName(SnakeCase&末尾のModelを取り除く)].dart`以下のファイルを開く。
2. `Widget設計書`の`Content`に応じて該当する`toXXX`メソッド内を書き換え、適切なUIを構築して返す。
- 適宜`import`を追加する
- `Model`の`Document`の変数をそのまま利用してもよい
- `value`で`Model`の変数をそのまま利用可能
- `uid`で`Model`の`DocumentID`を利用可能
- 下記の`Widget`を優先的に利用する
- [`KatanaUI`の`Widget`](mdc:.cursor/rules/docs/katana_ui_usage.mdc)
- [`Flutter`の`Widget`](mdc:.cursor/rules/docs/flutter_widgets.mdc)
- [`Form`の`Widget`](mdc:.cursor/rules/docs/form_usage.mdc)
- `Router`を用いて別画面への遷移を行う。詳しくは[`Router`の利用方法](mdc:.cursor/rules/docs/router_usage.mdc)を参照
- `Theme`を利用する場合は`lib/theme.dart`にある`theme`を参照。詳しくは[`Theme`の利用方法](mdc:.cursor/rules/docs/theme_usage.mdc)を参照
- 例:
```dart
// TODO: Implement the view.
return Container(
child: Text(this.value?.title ?? ''),
);
```
""";
}