body method

  1. @override
String body(
  1. String path,
  2. String baseName,
  3. 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 path, String baseName, String className) {
  return """
@immutable
@PagePath("/")
class HomePage extends PageScopedWidget {
const HomePage({
  super.key,
});

/// Used to transition to the HomePage screen.
///
/// ```dart
/// router.push(HomePage.query(parameters));    // Push page to HomePage.
/// router.replace(HomePage.query(parameters)); // Replace page to HomePage.
/// ```
@pageRouteQuery
static const query = _\$HomePageQuery();

@override
Widget build(BuildContext context, PageRef ref) {
  // Describes the process of loading
  // and defining variables required for the page.
  final model = ref.app.model(CounterModel.document())..load();

  // Describes the structure of the page.
  return UniversalScaffold(
    appBar: UniversalAppBar(title: Text(${module != null ? "ml().appTitle" : "l().appTitle"})),
    body: UniversalColumn(
      mainAxisAlignment: MainAxisAlignment.center,
      crossAxisAlignment: CrossAxisAlignment.center,
      children: [
        const Text(
          "You have pushed the button this many times:",
        ),
        Text(
          "\${model.value?.counter.value ?? 0}",
          style: context.theme.text.displayMedium,
        ),
      ],
    ),
    floatingActionButton: FloatingActionButton(
      onPressed: () {
        final value = model.value ?? const CounterModel();
        model.save(
          value.copyWith(counter: value.counter.increment(1)),
        );
      },
      tooltip: "Increment",
      child: const Icon(Icons.add),
    ),
  );
}
}

${module == null ? "" : """
/// [RouteQueryBuilder], which is also available externally.
///
/// ```dart
/// @PagePath(
///   "test",
///   implementType: HomePageQuery,
/// )
/// class TestPage extends PageScopedWidget {
/// }
/// ```
typedef HomePageQuery = _\$HomePageQuery;
"""}
""";
}