From 4cb8b82d7c4707ac55ad5b692e1873a4de996e9a Mon Sep 17 00:00:00 2001 From: Ryo Takeuchi Date: Tue, 11 Jun 2024 19:37:26 +0900 Subject: [PATCH 1/5] =?UTF-8?q?chore(mason):=20feature=20=E7=B3=BB?= =?UTF-8?q?=E3=81=AE=E3=83=91=E3=83=83=E3=82=B1=E3=83=BC=E3=82=B8=E4=BD=9C?= =?UTF-8?q?=E6=88=90=E3=81=AE=20mason=20brick=20=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mason.yaml | 2 + tools/bricks/features_package/CHANGELOG.md | 3 ++ tools/bricks/features_package/README.md | 39 +++++++++++++++++++ .../{{feature_name.snakeCase()}}/.gitignore | 32 +++++++++++++++ .../{{feature_name.snakeCase()}}/.metadata | 10 +++++ .../{{feature_name.snakeCase()}}/README.md | 1 + .../{{feature_name.snakeCase()}}/build.yaml | 27 +++++++++++++ .../{{feature_name.snakeCase()}}/l10n.yaml | 12 ++++++ .../lib/l10n.dart | 1 + ...atures_{{feature_name.snakeCase()}}_en.arb | 7 ++++ ...atures_{{feature_name.snakeCase()}}_ja.arb | 7 ++++ .../{{feature_name.snakeCase()}}_text.dart | 13 +++++++ .../lib/src/ui/pages/bar/bar_page.dart | 30 ++++++++++++++ .../src/ui/pages/bar/components/bar_text.dart | 13 +++++++ .../src/ui/pages/foo/components/foo_text.dart | 13 +++++++ .../lib/src/ui/pages/foo/foo_page.dart | 30 ++++++++++++++ .../{{feature_name.snakeCase()}}/lib/ui.dart | 3 ++ .../{{feature_name.snakeCase()}}/pubspec.yaml | 38 ++++++++++++++++++ .../{{feature_name.snakeCase()}}_test.dart | 7 ++++ tools/bricks/features_package/brick.yaml | 13 +++++++ .../bricks/features_package/hooks/.gitignore | 4 ++ .../features_package/hooks/post_gen.dart | 14 +++++++ .../features_package/hooks/pubspec.yaml | 7 ++++ 23 files changed, 326 insertions(+) create mode 100644 tools/bricks/features_package/CHANGELOG.md create mode 100644 tools/bricks/features_package/README.md create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/.gitignore create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/.metadata create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/README.md create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/build.yaml create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/l10n.yaml create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/l10n.dart create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_en.arb create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_ja.arb create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/components/{{feature_name.snakeCase()}}_text.dart create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/ui.dart create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/pubspec.yaml create mode 100644 tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/test/{{feature_name.snakeCase()}}_test.dart create mode 100644 tools/bricks/features_package/brick.yaml create mode 100644 tools/bricks/features_package/hooks/.gitignore create mode 100644 tools/bricks/features_package/hooks/post_gen.dart create mode 100644 tools/bricks/features_package/hooks/pubspec.yaml diff --git a/mason.yaml b/mason.yaml index 6e24b37f..b0e94074 100644 --- a/mason.yaml +++ b/mason.yaml @@ -3,5 +3,7 @@ bricks: path: tools/bricks/cores_package_flutter cores_package_dart: path: tools/bricks/cores_package_dart + features_package: + path: tools/bricks/features_package brick: path: tools/bricks/brick diff --git a/tools/bricks/features_package/CHANGELOG.md b/tools/bricks/features_package/CHANGELOG.md new file mode 100644 index 00000000..ce70e705 --- /dev/null +++ b/tools/bricks/features_package/CHANGELOG.md @@ -0,0 +1,3 @@ +# 0.1.0 + +- TODO: Describe initial release. diff --git a/tools/bricks/features_package/README.md b/tools/bricks/features_package/README.md new file mode 100644 index 00000000..bd2147fe --- /dev/null +++ b/tools/bricks/features_package/README.md @@ -0,0 +1,39 @@ +# features_package + +[![Powered by Mason](https://img.shields.io/endpoint?url=https%3A%2F%2Ftinyurl.com%2Fmason-badge)](https://github.com/felangel/mason) + +新しい feature パッケージを作成します. + +## Getting Started 🚀 + +以下のコマンドを実行します。 + +```shell +mason make features_package +``` + +feature 名を尋ねられるため、回答します。 +回答すると、以下の実行例のような構成のパッケージが `packages/features` 配下に作成されます。 + +```text +❯ mason make features_package +? What is feature name? (example: foo_bar) foo_bar +✓ Generated 16 files. (72ms) + created packages/features/foo_bar/test/foo_bar_test.dart + created packages/features/foo_bar/l10n.yaml + created packages/features/foo_bar/.metadata + created packages/features/foo_bar/README.md + created packages/features/foo_bar/pubspec.yaml + created packages/features/foo_bar/.gitignore + created packages/features/foo_bar/lib/ui.dart + created packages/features/foo_bar/lib/l10n.dart + created packages/features/foo_bar/lib/src/ui/components/foo_bar_text.dart + created packages/features/foo_bar/lib/src/ui/pages/foo/components/foo_text.dart + created packages/features/foo_bar/lib/src/ui/pages/foo/foo_page.dart + created packages/features/foo_bar/lib/src/ui/pages/bar/bar_page.dart + created packages/features/foo_bar/lib/src/ui/pages/bar/components/bar_text.dart + created packages/features/foo_bar/lib/src/l10n/features_foo_bar_ja.arb + created packages/features/foo_bar/lib/src/l10n/features_foo_bar_en.arb + created packages/features/foo_bar/build.yaml +✓ Compiled post_gen.dart (2.4s) +``` diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/.gitignore b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/.gitignore new file mode 100644 index 00000000..d4b0ff19 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/.gitignore @@ -0,0 +1,32 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +build/ + +# Melos related +/pubspec_overrides.yaml diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/.metadata b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/.metadata new file mode 100644 index 00000000..056185a6 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "ef1af02aead6fe2414f3aafa5a61087b610e1332" + channel: "stable" + +project_type: package diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/README.md b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/README.md new file mode 100644 index 00000000..297be6d3 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/README.md @@ -0,0 +1 @@ +# feature_{{feature_name.snakeCase()}} package diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/build.yaml b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/build.yaml new file mode 100644 index 00000000..d0b749a1 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/build.yaml @@ -0,0 +1,27 @@ +targets: + $default: + builders: + freezed: + # https://github.com/dart-lang/build/blob/master/docs/faq.md#how-do-i-avoid-running-builders-on-unnecessary-inputs + generate_for: + include: + - lib/{model,**/model}/**.dart + # https://github.com/google/json_serializable.dart/tree/master/json_serializable#build-configuration + json_serializable: + generate_for: + include: + - lib/{model,**/model}/**.dart + options: + field_rename: snake + # json のデシリアライズ時に発生する Exception を CheckedFromJsonException にまとめる + checked: true + riverpod_generator: + generate_for: + include: + - lib/{provider,**/provider}/**.dart + # https://github.com/dart-lang/source_gen#ignore_for_file + source_gen:combining_builder: + options: + ignore_for_file: + - type=lint + - duplicate_ignore diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/l10n.yaml b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/l10n.yaml new file mode 100644 index 00000000..5e84ac04 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/l10n.yaml @@ -0,0 +1,12 @@ +arb-dir: lib/src/l10n +output-dir: lib/src/gen/l10n +template-arb-file: features_{{feature_name.snakeCase()}}_ja.arb +output-localization-file: l10n.dart +output-class: L10n +synthetic-package: false +preferred-supported-locales: + - ja + - en +header: '// ignore_for_file: type=lint' +nullable-getter: false +format: true diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/l10n.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/l10n.dart new file mode 100644 index 00000000..b9b025b8 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/l10n.dart @@ -0,0 +1 @@ +export 'src/gen/l10n/l10n.dart' show L10n; diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_en.arb b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_en.arb new file mode 100644 index 00000000..98852f36 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_en.arb @@ -0,0 +1,7 @@ +{ + "{{feature_name.camelCase()}}Text": "{{feature_name.pascalCase()}} Text", + "{{feature_name.camelCase()}}BarAppBarTitle": "{{feature_name.pascalCase()}} Bar", + "{{feature_name.camelCase()}}BarText": "{{feature_name.pascalCase()}} Bar Text", + "{{feature_name.camelCase()}}FooAppBarTitle": "{{feature_name.pascalCase()}} Foo", + "{{feature_name.camelCase()}}FooText": "{{feature_name.pascalCase()}} Foo Text" +} diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_ja.arb b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_ja.arb new file mode 100644 index 00000000..ba2b9c06 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_ja.arb @@ -0,0 +1,7 @@ +{ + "{{feature_name.camelCase()}}Text": "{{feature_name.pascalCase()}} テキスト", + "{{feature_name.camelCase()}}BarAppBarTitle": "{{feature_name.pascalCase()}} Bar", + "{{feature_name.camelCase()}}BarText": "{{feature_name.pascalCase()}} Bar テキスト", + "{{feature_name.camelCase()}}FooAppBarTitle": "{{feature_name.pascalCase()}} Foo", + "{{feature_name.camelCase()}}FooText": "{{feature_name.pascalCase()}} Foo テキスト" +} diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/components/{{feature_name.snakeCase()}}_text.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/components/{{feature_name.snakeCase()}}_text.dart new file mode 100644 index 00000000..775b6a13 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/components/{{feature_name.snakeCase()}}_text.dart @@ -0,0 +1,13 @@ +import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; +import 'package:flutter/material.dart'; + +final class {{feature_name.pascalCase()}}Text extends StatelessWidget { + const {{feature_name.pascalCase()}}Text({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = L10n.of(context); + + return Text(l10n.{{feature_name.camelCase()}}Text); + } +} diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart new file mode 100644 index 00000000..8174c86e --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart @@ -0,0 +1,30 @@ +import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; +import 'package:features_{{feature_name.snakeCase()}}/src/ui/components/{{feature_name.snakeCase()}}_text.dart'; +import 'package:features_{{feature_name.snakeCase()}}/src/ui/pages/bar/components/bar_text.dart'; +import 'package:flutter/material.dart'; + +final class BarPage extends StatelessWidget { + const BarPage({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = L10n.of(context); + + return Scaffold( + appBar: AppBar( + title: Text(l10n.{{feature_name.camelCase()}}BarAppBarTitle), + ), + body: const SafeArea( + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + {{feature_name.pascalCase()}}Text(), + BarText(), + ], + ), + ), + ), + ); + } +} diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart new file mode 100644 index 00000000..ad617fd2 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart @@ -0,0 +1,13 @@ +import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; +import 'package:flutter/material.dart'; + +final class BarText extends StatelessWidget { + const BarText({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = L10n.of(context); + + return Text(l10n.{{feature_name.camelCase()}}BarText); + } +} diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart new file mode 100644 index 00000000..120ae518 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart @@ -0,0 +1,13 @@ +import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; +import 'package:flutter/material.dart'; + +final class FooText extends StatelessWidget { + const FooText({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = L10n.of(context); + + return Text(l10n.{{feature_name.camelCase()}}FooText); + } +} diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart new file mode 100644 index 00000000..1aecc6a7 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart @@ -0,0 +1,30 @@ +import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; +import 'package:features_{{feature_name.snakeCase()}}/src/ui/components/{{feature_name.snakeCase()}}_text.dart'; +import 'package:features_{{feature_name.snakeCase()}}/src/ui/pages/foo/components/foo_text.dart'; +import 'package:flutter/material.dart'; + +final class FooPage extends StatelessWidget { + const FooPage({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = L10n.of(context); + + return Scaffold( + appBar: AppBar( + title: Text(l10n.{{feature_name.camelCase()}}FooAppBarTitle), + ), + body: const SafeArea( + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + {{feature_name.pascalCase()}}Text(), + FooText(), + ], + ), + ), + ), + ); + } +} diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/ui.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/ui.dart new file mode 100644 index 00000000..22489352 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/ui.dart @@ -0,0 +1,3 @@ +export 'src/ui/components/{{feature_name.snakeCase()}}_text.dart'; +export 'src/ui/pages/bar/bar_page.dart'; +export 'src/ui/pages/foo/foo_page.dart'; diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/pubspec.yaml b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/pubspec.yaml new file mode 100644 index 00000000..538de01e --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/pubspec.yaml @@ -0,0 +1,38 @@ +name: features_{{feature_name.snakeCase()}} +description: "This package provides {{feature_name.snakeCase()}} features." +publish_to: 'none' +version: 0.0.1 + +environment: + sdk: ^3.4.1 + flutter: ^3.22.1 + +dependencies: + cores_core: + path: ../../cores/core + cores_data: + path: ../../cores/data + cores_designsystem: + path: ../../cores/designsystem + flutter: + sdk: flutter + flutter_hooks: ^0.20.5 + flutter_localizations: + sdk: flutter + freezed_annotation: ^2.4.1 + hooks_riverpod: ^2.5.1 + intl: ^0.19.0 + riverpod_annotation: ^2.3.5 + +dev_dependencies: + build_runner: ^2.4.7 + custom_lint: ^0.6.4 + flutter_test: + sdk: flutter + freezed: ^2.4.7 + json_serializable: ^6.7.1 + riverpod_generator: ^2.4.0 + riverpod_lint: ^2.3.10 + yumemi_lints: ^2.1.0 + +flutter: diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/test/{{feature_name.snakeCase()}}_test.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/test/{{feature_name.snakeCase()}}_test.dart new file mode 100644 index 00000000..947bdcf4 --- /dev/null +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/test/{{feature_name.snakeCase()}}_test.dart @@ -0,0 +1,7 @@ +import 'package:flutter_test/flutter_test.dart'; + +void main() { + test('[exampleTest] 1 + 1 = 2', () { + expect(1 + 1, 2); + }); +} diff --git a/tools/bricks/features_package/brick.yaml b/tools/bricks/features_package/brick.yaml new file mode 100644 index 00000000..bf765779 --- /dev/null +++ b/tools/bricks/features_package/brick.yaml @@ -0,0 +1,13 @@ +name: features_package +description: A new brick created with the Mason CLI. + +version: 0.1.0 + +environment: + mason: ">=0.1.0-dev.52 <0.1.0" + +vars: + feature_name: + type: string + description: Feature name + prompt: 'What is feature name? (example: foo_bar)' diff --git a/tools/bricks/features_package/hooks/.gitignore b/tools/bricks/features_package/hooks/.gitignore new file mode 100644 index 00000000..7b37acf4 --- /dev/null +++ b/tools/bricks/features_package/hooks/.gitignore @@ -0,0 +1,4 @@ +.dart_tool +.packages +pubspec.lock +build diff --git a/tools/bricks/features_package/hooks/post_gen.dart b/tools/bricks/features_package/hooks/post_gen.dart new file mode 100644 index 00000000..f607bc36 --- /dev/null +++ b/tools/bricks/features_package/hooks/post_gen.dart @@ -0,0 +1,14 @@ +import 'dart:io'; + +import 'package:mason/mason.dart'; + +void run(HookContext context) { + Process.runSync( + 'melos', + ['bs'], + ); + Process.runSync( + 'melos', + ['run', 'regenerate_by_using_gen_l10n'], + ); +} diff --git a/tools/bricks/features_package/hooks/pubspec.yaml b/tools/bricks/features_package/hooks/pubspec.yaml new file mode 100644 index 00000000..4f226fea --- /dev/null +++ b/tools/bricks/features_package/hooks/pubspec.yaml @@ -0,0 +1,7 @@ +name: features_package_hooks + +environment: + sdk: ^3.4.1 + +dependencies: + mason: ">=0.1.0-dev.52 <0.1.0" From dc00996e5c8c599ca335abf3a763c81cdf4f8116 Mon Sep 17 00:00:00 2001 From: Ryo Takeuchi Date: Fri, 14 Jun 2024 14:01:18 +0900 Subject: [PATCH 2/5] =?UTF-8?q?refactor(mason):=20final=20=E4=BF=AE?= =?UTF-8?q?=E9=A3=BE=E5=AD=90=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/ui/components/{{feature_name.snakeCase()}}_text.dart | 2 +- .../lib/src/ui/pages/bar/bar_page.dart | 2 +- .../lib/src/ui/pages/bar/components/bar_text.dart | 2 +- .../lib/src/ui/pages/foo/components/foo_text.dart | 2 +- .../lib/src/ui/pages/foo/foo_page.dart | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/components/{{feature_name.snakeCase()}}_text.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/components/{{feature_name.snakeCase()}}_text.dart index 775b6a13..6d99fabe 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/components/{{feature_name.snakeCase()}}_text.dart +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/components/{{feature_name.snakeCase()}}_text.dart @@ -1,7 +1,7 @@ import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; import 'package:flutter/material.dart'; -final class {{feature_name.pascalCase()}}Text extends StatelessWidget { +class {{feature_name.pascalCase()}}Text extends StatelessWidget { const {{feature_name.pascalCase()}}Text({super.key}); @override diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart index 8174c86e..0473f02c 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart @@ -3,7 +3,7 @@ import 'package:features_{{feature_name.snakeCase()}}/src/ui/components/{{featur import 'package:features_{{feature_name.snakeCase()}}/src/ui/pages/bar/components/bar_text.dart'; import 'package:flutter/material.dart'; -final class BarPage extends StatelessWidget { +class BarPage extends StatelessWidget { const BarPage({super.key}); @override diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart index ad617fd2..8d566cff 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart @@ -1,7 +1,7 @@ import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; import 'package:flutter/material.dart'; -final class BarText extends StatelessWidget { +class BarText extends StatelessWidget { const BarText({super.key}); @override diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart index 120ae518..9b476b85 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart @@ -1,7 +1,7 @@ import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; import 'package:flutter/material.dart'; -final class FooText extends StatelessWidget { +class FooText extends StatelessWidget { const FooText({super.key}); @override diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart index 1aecc6a7..9f1bf256 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart @@ -3,7 +3,7 @@ import 'package:features_{{feature_name.snakeCase()}}/src/ui/components/{{featur import 'package:features_{{feature_name.snakeCase()}}/src/ui/pages/foo/components/foo_text.dart'; import 'package:flutter/material.dart'; -final class FooPage extends StatelessWidget { +class FooPage extends StatelessWidget { const FooPage({super.key}); @override From 9a7baf706f5c9efdf48c0edc7d2c365a22d1e539 Mon Sep 17 00:00:00 2001 From: Ryo Takeuchi Date: Fri, 14 Jun 2024 14:01:35 +0900 Subject: [PATCH 3/5] refactor: L10nSetting -> L10n --- apps/app/lib/main.dart | 6 +-- packages/features/setting/l10n.yaml | 2 +- packages/features/setting/lib/l10n.dart | 2 +- .../setting/lib/src/gen/l10n/l10n.dart | 41 +++++++++---------- .../setting/lib/src/gen/l10n/l10n_en.dart | 4 +- .../setting/lib/src/gen/l10n/l10n_ja.dart | 4 +- .../setting/lib/src/ui/setting_page.dart | 2 +- 7 files changed, 30 insertions(+), 31 deletions(-) diff --git a/apps/app/lib/main.dart b/apps/app/lib/main.dart index caf6f1ed..e851413a 100644 --- a/apps/app/lib/main.dart +++ b/apps/app/lib/main.dart @@ -5,7 +5,7 @@ import 'package:cores_core/ui.dart'; import 'package:cores_data/theme_mode.dart'; import 'package:cores_designsystem/themes.dart'; import 'package:cores_init/provider.dart'; -import 'package:features_setting/l10n.dart'; +import 'package:features_setting/l10n.dart' as features_setting; import 'package:flutter/material.dart'; import 'package:flutter_app/app_initializer.dart'; import 'package:flutter_app/gen/l10n/l10n.dart'; @@ -60,11 +60,11 @@ class MainApp extends ConsumerWidget { return MaterialApp.router( localizationsDelegates: const [ ...L10n.localizationsDelegates, - ...L10nSetting.localizationsDelegates, + ...features_setting.L10n.localizationsDelegates, ], supportedLocales: const [ ...L10n.supportedLocales, - ...L10nSetting.supportedLocales, + ...features_setting.L10n.supportedLocales, ], scaffoldMessengerKey: SnackBarManager.rootScaffoldMessengerKey, routerConfig: ref.watch(routerProvider), diff --git a/packages/features/setting/l10n.yaml b/packages/features/setting/l10n.yaml index b860dc42..a4c6d574 100644 --- a/packages/features/setting/l10n.yaml +++ b/packages/features/setting/l10n.yaml @@ -2,7 +2,7 @@ arb-dir: assets/l10n output-dir: lib/src/gen/l10n template-arb-file: app_ja.arb output-localization-file: l10n.dart -output-class: L10nSetting +output-class: L10n synthetic-package: false preferred-supported-locales: - ja diff --git a/packages/features/setting/lib/l10n.dart b/packages/features/setting/lib/l10n.dart index 0f845d0b..b9b025b8 100644 --- a/packages/features/setting/lib/l10n.dart +++ b/packages/features/setting/lib/l10n.dart @@ -1 +1 @@ -export 'src/gen/l10n/l10n.dart' show L10nSetting; +export 'src/gen/l10n/l10n.dart' show L10n; diff --git a/packages/features/setting/lib/src/gen/l10n/l10n.dart b/packages/features/setting/lib/src/gen/l10n/l10n.dart index e4a7196a..02c79a85 100644 --- a/packages/features/setting/lib/src/gen/l10n/l10n.dart +++ b/packages/features/setting/lib/src/gen/l10n/l10n.dart @@ -9,10 +9,10 @@ import 'package:intl/intl.dart' as intl; import 'l10n_en.dart'; import 'l10n_ja.dart'; -/// Callers can lookup localized strings with an instance of L10nSetting -/// returned by `L10nSetting.of(context)`. +/// Callers can lookup localized strings with an instance of L10n +/// returned by `L10n.of(context)`. /// -/// Applications need to include `L10nSetting.delegate()` in their app's +/// Applications need to include `L10n.delegate()` in their app's /// `localizationDelegates` list, and the locales they support in the app's /// `supportedLocales` list. For example: /// @@ -20,8 +20,8 @@ import 'l10n_ja.dart'; /// import 'l10n/l10n.dart'; /// /// return MaterialApp( -/// localizationsDelegates: L10nSetting.localizationsDelegates, -/// supportedLocales: L10nSetting.supportedLocales, +/// localizationsDelegates: L10n.localizationsDelegates, +/// supportedLocales: L10n.supportedLocales, /// home: MyApplicationHome(), /// ); /// ``` @@ -58,20 +58,19 @@ import 'l10n_ja.dart'; /// Select and expand the newly-created Localizations item then, for each /// locale your application supports, add a new item and select the locale /// you wish to add from the pop-up menu in the Value field. This list should -/// be consistent with the languages listed in the L10nSetting.supportedLocales +/// be consistent with the languages listed in the L10n.supportedLocales /// property. -abstract class L10nSetting { - L10nSetting(String locale) +abstract class L10n { + L10n(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; - static L10nSetting of(BuildContext context) { - return Localizations.of(context, L10nSetting)!; + static L10n of(BuildContext context) { + return Localizations.of(context, L10n)!; } - static const LocalizationsDelegate delegate = - _L10nSettingDelegate(); + static const LocalizationsDelegate delegate = _L10nDelegate(); /// A list of this localizations delegate along with the default localizations /// delegates. @@ -134,12 +133,12 @@ abstract class L10nSetting { String get settingVersion; } -class _L10nSettingDelegate extends LocalizationsDelegate { - const _L10nSettingDelegate(); +class _L10nDelegate extends LocalizationsDelegate { + const _L10nDelegate(); @override - Future load(Locale locale) { - return SynchronousFuture(lookupL10nSetting(locale)); + Future load(Locale locale) { + return SynchronousFuture(lookupL10n(locale)); } @override @@ -147,20 +146,20 @@ class _L10nSettingDelegate extends LocalizationsDelegate { ['en', 'ja'].contains(locale.languageCode); @override - bool shouldReload(_L10nSettingDelegate old) => false; + bool shouldReload(_L10nDelegate old) => false; } -L10nSetting lookupL10nSetting(Locale locale) { +L10n lookupL10n(Locale locale) { // Lookup logic when only language code is specified. switch (locale.languageCode) { case 'en': - return L10nSettingEn(); + return L10nEn(); case 'ja': - return L10nSettingJa(); + return L10nJa(); } throw FlutterError( - 'L10nSetting.delegate failed to load unsupported locale "$locale". This is likely ' + 'L10n.delegate failed to load unsupported locale "$locale". This is likely ' 'an issue with the localizations generation tool. Please file an issue ' 'on GitHub with a reproducible sample app and the gen-l10n configuration ' 'that was used.'); diff --git a/packages/features/setting/lib/src/gen/l10n/l10n_en.dart b/packages/features/setting/lib/src/gen/l10n/l10n_en.dart index 90af8adf..467cd5c0 100644 --- a/packages/features/setting/lib/src/gen/l10n/l10n_en.dart +++ b/packages/features/setting/lib/src/gen/l10n/l10n_en.dart @@ -3,8 +3,8 @@ import 'l10n.dart'; /// The translations for English (`en`). -class L10nSettingEn extends L10nSetting { - L10nSettingEn([String locale = 'en']) : super(locale); +class L10nEn extends L10n { + L10nEn([String locale = 'en']) : super(locale); @override String get settingAppBar => 'Setting'; diff --git a/packages/features/setting/lib/src/gen/l10n/l10n_ja.dart b/packages/features/setting/lib/src/gen/l10n/l10n_ja.dart index 211226be..eeda9802 100644 --- a/packages/features/setting/lib/src/gen/l10n/l10n_ja.dart +++ b/packages/features/setting/lib/src/gen/l10n/l10n_ja.dart @@ -3,8 +3,8 @@ import 'l10n.dart'; /// The translations for Japanese (`ja`). -class L10nSettingJa extends L10nSetting { - L10nSettingJa([String locale = 'ja']) : super(locale); +class L10nJa extends L10n { + L10nJa([String locale = 'ja']) : super(locale); @override String get settingAppBar => '設定'; diff --git a/packages/features/setting/lib/src/ui/setting_page.dart b/packages/features/setting/lib/src/ui/setting_page.dart index b8c75225..e3292d1d 100644 --- a/packages/features/setting/lib/src/ui/setting_page.dart +++ b/packages/features/setting/lib/src/ui/setting_page.dart @@ -15,7 +15,7 @@ class SettingPage extends ConsumerWidget { final navigator = ref.watch(settingNavigatorProvider); final currentThemeMode = ref.watch(themeModeNotifierProvider); final buildConfig = ref.watch(buildConfigProvider); - final l10n = L10nSetting.of(context); + final l10n = L10n.of(context); return Scaffold( appBar: AppBar( From 1be5a9f6931e1d7fa3aec57a60b304b50d3f58d8 Mon Sep 17 00:00:00 2001 From: Ryo Takeuchi Date: Fri, 14 Jun 2024 14:01:52 +0900 Subject: [PATCH 4/5] =?UTF-8?q?refactor:=20arb=20=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=A4=E3=83=AB=E3=82=92=20lib=20=E9=85=8D=E4=B8=8B=E3=81=A7?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/app/l10n.yaml | 2 +- apps/app/{assets => lib}/l10n/app_en.arb | 0 apps/app/{assets => lib}/l10n/app_ja.arb | 0 packages/features/setting/l10n.yaml | 2 +- packages/features/setting/{assets => lib/src}/l10n/app_en.arb | 0 packages/features/setting/{assets => lib/src}/l10n/app_ja.arb | 0 6 files changed, 2 insertions(+), 2 deletions(-) rename apps/app/{assets => lib}/l10n/app_en.arb (100%) rename apps/app/{assets => lib}/l10n/app_ja.arb (100%) rename packages/features/setting/{assets => lib/src}/l10n/app_en.arb (100%) rename packages/features/setting/{assets => lib/src}/l10n/app_ja.arb (100%) diff --git a/apps/app/l10n.yaml b/apps/app/l10n.yaml index a296b4ae..ea2cdbb4 100644 --- a/apps/app/l10n.yaml +++ b/apps/app/l10n.yaml @@ -1,4 +1,4 @@ -arb-dir: assets/l10n +arb-dir: lib/l10n output-dir: lib/gen/l10n template-arb-file: app_ja.arb output-localization-file: l10n.dart diff --git a/apps/app/assets/l10n/app_en.arb b/apps/app/lib/l10n/app_en.arb similarity index 100% rename from apps/app/assets/l10n/app_en.arb rename to apps/app/lib/l10n/app_en.arb diff --git a/apps/app/assets/l10n/app_ja.arb b/apps/app/lib/l10n/app_ja.arb similarity index 100% rename from apps/app/assets/l10n/app_ja.arb rename to apps/app/lib/l10n/app_ja.arb diff --git a/packages/features/setting/l10n.yaml b/packages/features/setting/l10n.yaml index a4c6d574..c5d2f7fc 100644 --- a/packages/features/setting/l10n.yaml +++ b/packages/features/setting/l10n.yaml @@ -1,4 +1,4 @@ -arb-dir: assets/l10n +arb-dir: lib/src/l10n output-dir: lib/src/gen/l10n template-arb-file: app_ja.arb output-localization-file: l10n.dart diff --git a/packages/features/setting/assets/l10n/app_en.arb b/packages/features/setting/lib/src/l10n/app_en.arb similarity index 100% rename from packages/features/setting/assets/l10n/app_en.arb rename to packages/features/setting/lib/src/l10n/app_en.arb diff --git a/packages/features/setting/assets/l10n/app_ja.arb b/packages/features/setting/lib/src/l10n/app_ja.arb similarity index 100% rename from packages/features/setting/assets/l10n/app_ja.arb rename to packages/features/setting/lib/src/l10n/app_ja.arb From 63b396c7383627e5cc39429008917c1cb95e76f4 Mon Sep 17 00:00:00 2001 From: Ryo Takeuchi Date: Fri, 14 Jun 2024 14:02:17 +0900 Subject: [PATCH 5/5] =?UTF-8?q?refactor(mason):=20=E3=83=9A=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=81=AE=E5=90=8D=E5=89=8D=E3=82=92=E5=AE=9F=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E3=81=AA=20List/Detail=20=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../l10n/features_{{feature_name.snakeCase()}}_en.arb | 8 ++++---- .../l10n/features_{{feature_name.snakeCase()}}_ja.arb | 8 ++++---- .../{{feature_name.snakeCase()}}_detail_text.dart} | 6 +++--- .../{{feature_name.snakeCase()}}_detail_page.dart} | 10 +++++----- .../{{feature_name.snakeCase()}}_list_text.dart} | 6 +++--- .../{{feature_name.snakeCase()}}_list_page.dart} | 10 +++++----- .../features/{{feature_name.snakeCase()}}/lib/ui.dart | 4 ++-- 7 files changed, 26 insertions(+), 26 deletions(-) rename tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/{foo/components/foo_text.dart => detail/components/{{feature_name.snakeCase()}}_detail_text.dart} (52%) rename tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/{foo/foo_page.dart => detail/{{feature_name.snakeCase()}}_detail_page.dart} (67%) rename tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/{bar/components/bar_text.dart => list/components/{{feature_name.snakeCase()}}_list_text.dart} (52%) rename tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/{bar/bar_page.dart => list/{{feature_name.snakeCase()}}_list_page.dart} (68%) diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_en.arb b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_en.arb index 98852f36..d42fc1c9 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_en.arb +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_en.arb @@ -1,7 +1,7 @@ { "{{feature_name.camelCase()}}Text": "{{feature_name.pascalCase()}} Text", - "{{feature_name.camelCase()}}BarAppBarTitle": "{{feature_name.pascalCase()}} Bar", - "{{feature_name.camelCase()}}BarText": "{{feature_name.pascalCase()}} Bar Text", - "{{feature_name.camelCase()}}FooAppBarTitle": "{{feature_name.pascalCase()}} Foo", - "{{feature_name.camelCase()}}FooText": "{{feature_name.pascalCase()}} Foo Text" + "{{feature_name.camelCase()}}ListAppBarTitle": "{{feature_name.pascalCase()}} List", + "{{feature_name.camelCase()}}ListText": "{{feature_name.pascalCase()}} List Text", + "{{feature_name.camelCase()}}DetailAppBarTitle": "{{feature_name.pascalCase()}} Detail", + "{{feature_name.camelCase()}}DetailText": "{{feature_name.pascalCase()}} Detail Text" } diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_ja.arb b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_ja.arb index ba2b9c06..ddb47115 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_ja.arb +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/l10n/features_{{feature_name.snakeCase()}}_ja.arb @@ -1,7 +1,7 @@ { "{{feature_name.camelCase()}}Text": "{{feature_name.pascalCase()}} テキスト", - "{{feature_name.camelCase()}}BarAppBarTitle": "{{feature_name.pascalCase()}} Bar", - "{{feature_name.camelCase()}}BarText": "{{feature_name.pascalCase()}} Bar テキスト", - "{{feature_name.camelCase()}}FooAppBarTitle": "{{feature_name.pascalCase()}} Foo", - "{{feature_name.camelCase()}}FooText": "{{feature_name.pascalCase()}} Foo テキスト" + "{{feature_name.camelCase()}}ListAppBarTitle": "{{feature_name.pascalCase()}} 一覧", + "{{feature_name.camelCase()}}ListText": "{{feature_name.pascalCase()}} 一覧 テキスト", + "{{feature_name.camelCase()}}DetailAppBarTitle": "{{feature_name.pascalCase()}} 詳細", + "{{feature_name.camelCase()}}DetailText": "{{feature_name.pascalCase()}} 詳細 テキスト" } diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/detail/components/{{feature_name.snakeCase()}}_detail_text.dart similarity index 52% rename from tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart rename to tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/detail/components/{{feature_name.snakeCase()}}_detail_text.dart index 9b476b85..b1c40a0d 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/components/foo_text.dart +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/detail/components/{{feature_name.snakeCase()}}_detail_text.dart @@ -1,13 +1,13 @@ import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; import 'package:flutter/material.dart'; -class FooText extends StatelessWidget { - const FooText({super.key}); +class {{feature_name.pascalCase()}}DetailText extends StatelessWidget { + const {{feature_name.pascalCase()}}DetailText({super.key}); @override Widget build(BuildContext context) { final l10n = L10n.of(context); - return Text(l10n.{{feature_name.camelCase()}}FooText); + return Text(l10n.{{feature_name.camelCase()}}DetailText); } } diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/detail/{{feature_name.snakeCase()}}_detail_page.dart similarity index 67% rename from tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart rename to tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/detail/{{feature_name.snakeCase()}}_detail_page.dart index 9f1bf256..52981c86 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/foo/foo_page.dart +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/detail/{{feature_name.snakeCase()}}_detail_page.dart @@ -1,10 +1,10 @@ import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; import 'package:features_{{feature_name.snakeCase()}}/src/ui/components/{{feature_name.snakeCase()}}_text.dart'; -import 'package:features_{{feature_name.snakeCase()}}/src/ui/pages/foo/components/foo_text.dart'; +import 'package:features_{{feature_name.snakeCase()}}/src/ui/pages/detail/components/{{feature_name.snakeCase()}}_detail_text.dart'; import 'package:flutter/material.dart'; -class FooPage extends StatelessWidget { - const FooPage({super.key}); +class {{feature_name.pascalCase()}}DetailPage extends StatelessWidget { + const {{feature_name.pascalCase()}}DetailPage({super.key}); @override Widget build(BuildContext context) { @@ -12,7 +12,7 @@ class FooPage extends StatelessWidget { return Scaffold( appBar: AppBar( - title: Text(l10n.{{feature_name.camelCase()}}FooAppBarTitle), + title: Text(l10n.{{feature_name.camelCase()}}DetailAppBarTitle), ), body: const SafeArea( child: Center( @@ -20,7 +20,7 @@ class FooPage extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ {{feature_name.pascalCase()}}Text(), - FooText(), + {{feature_name.pascalCase()}}DetailText(), ], ), ), diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/list/components/{{feature_name.snakeCase()}}_list_text.dart similarity index 52% rename from tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart rename to tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/list/components/{{feature_name.snakeCase()}}_list_text.dart index 8d566cff..6905d57d 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/components/bar_text.dart +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/list/components/{{feature_name.snakeCase()}}_list_text.dart @@ -1,13 +1,13 @@ import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; import 'package:flutter/material.dart'; -class BarText extends StatelessWidget { - const BarText({super.key}); +class {{feature_name.pascalCase()}}ListText extends StatelessWidget { + const {{feature_name.pascalCase()}}ListText({super.key}); @override Widget build(BuildContext context) { final l10n = L10n.of(context); - return Text(l10n.{{feature_name.camelCase()}}BarText); + return Text(l10n.{{feature_name.camelCase()}}ListText); } } diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/list/{{feature_name.snakeCase()}}_list_page.dart similarity index 68% rename from tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart rename to tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/list/{{feature_name.snakeCase()}}_list_page.dart index 0473f02c..97cb8d2e 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/bar/bar_page.dart +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/src/ui/pages/list/{{feature_name.snakeCase()}}_list_page.dart @@ -1,10 +1,10 @@ import 'package:features_{{feature_name.snakeCase()}}/src/gen/l10n/l10n.dart'; import 'package:features_{{feature_name.snakeCase()}}/src/ui/components/{{feature_name.snakeCase()}}_text.dart'; -import 'package:features_{{feature_name.snakeCase()}}/src/ui/pages/bar/components/bar_text.dart'; +import 'package:features_{{feature_name.snakeCase()}}/src/ui/pages/list/components/{{feature_name.snakeCase()}}_list_text.dart'; import 'package:flutter/material.dart'; -class BarPage extends StatelessWidget { - const BarPage({super.key}); +class {{feature_name.pascalCase()}}ListPage extends StatelessWidget { + const {{feature_name.pascalCase()}}ListPage({super.key}); @override Widget build(BuildContext context) { @@ -12,7 +12,7 @@ class BarPage extends StatelessWidget { return Scaffold( appBar: AppBar( - title: Text(l10n.{{feature_name.camelCase()}}BarAppBarTitle), + title: Text(l10n.{{feature_name.camelCase()}}ListAppBarTitle), ), body: const SafeArea( child: Center( @@ -20,7 +20,7 @@ class BarPage extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ {{feature_name.pascalCase()}}Text(), - BarText(), + {{feature_name.pascalCase()}}ListText(), ], ), ), diff --git a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/ui.dart b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/ui.dart index 22489352..145f0bcd 100644 --- a/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/ui.dart +++ b/tools/bricks/features_package/__brick__/packages/features/{{feature_name.snakeCase()}}/lib/ui.dart @@ -1,3 +1,3 @@ export 'src/ui/components/{{feature_name.snakeCase()}}_text.dart'; -export 'src/ui/pages/bar/bar_page.dart'; -export 'src/ui/pages/foo/foo_page.dart'; +export 'src/ui/pages/detail/{{feature_name.snakeCase()}}_detail_page.dart'; +export 'src/ui/pages/list/{{feature_name.snakeCase()}}_list_page.dart';