質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

2回答

134閲覧

flutterでmain_(flavor).dartファイルが作られない

meex

総合スコア83

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2025/04/21 08:42

実現したいこと

flutterを勉強しています。
pubspec.yamlの中身は子のようになっています。

YAML

1name: sample_project 2description: "sample_project" 3 4publish_to: 'none' # Remove this line if you wish to publish to pub.dev 5 6 7version: 1.0.0+1 8 9environment: 10 sdk: ^3.7.2 11 12dependencies: 13 flutter: 14 sdk: flutter 15 16 cupertino_icons: ^1.0.8 17###■ 18 flutter_flavor: ^3.1.4 19 flutter_flavorizr: ^2.4.0 20 21dev_dependencies: 22 flutter_test: 23 sdk: flutter 24 25 flutter_lints: ^5.0.0 26 27flutter: 28 29 uses-material-design: true 30 31flavorizr: 32 app: 33 android: 34 flavorDimensions: "flavor-type" 35 flavors: 36 dev: 37 app: 38 name: "テキストDev" 39 android: 40 applicationId: "com.firebaseapp.xxxxdev" 41 prod: 42 app: 43 name: "テキスト" 44 android: 45 applicationId: "com.firebaseapp.xxxxprod" 46

前提

学習動画では「★flutter pub run flutter_flavorizr を実行すると以下が作られる」となってます。
main_dev.dart
main_prod.dart
また、main.dartの中身も書き換えられているとありました。
イメージ説明

しかし、私の環境では作られていないし、main.dartも書き換えられていませんでした。
イメージ説明

なぜでしょうか?

試したこと

ネットで調べてみましたが、やはり★のコマンドを実行するとmain_(flavor).dartが作られるそうでした。
それか、今の最新バージョンのFlutterでは仕様が変わり作られなくなったのでしょうか?

https://zenn.dev/mukkun69n/articles/63aecad4a732fa

 
※"flutter_flavor, flutter_flavorizr"を追加した後すぐに「flutter pub get」を実行していて以下のように変更完了した状態になっています。

Changed 18 dependencies!
7 packages have newer versions incompatible with dependency constraints.
Try flutter pub outdated for more information.

 


また「flutter pub run flutter_flavorizr」を実行したときも以下のように成功しています。

PS C:\Users\flutter_app> flutter pub run flutter_flavorizr
Deprecated. Use dart run instead.
Flavorization process started
The following instructions will be executed:

  • assets:download
  • assets:extract
  • android:androidManifest
  • android:flavorizrGradle
  • android:buildGradle
  • android:dummyAssets
  • android:icons
  • flutter:flavors
  • flutter:app
  • flutter:pages
  • flutter:main
  • google:firebase
  • huawei:agconnect
  • assets:clean
  • ide:config

Do you want to proceed? (Y/n) Yes
✓ [assets:download] Completed (0.6s)
✓ [assets:extract] Completed (82ms)
✓ [android:androidManifest] Completed (52ms)
✓ [android:flavorizrGradle] Completed (3ms)
✓ [android:buildGradle] Completed (7ms)
✓ [android:dummyAssets] Completed (50ms)
✓ [android:icons] Completed (1ms)
✓ [flutter:flavors] Completed (1ms)
✓ [flutter:app] Completed (2ms)
✓ [flutter:pages] Completed (7ms)
✓ [flutter:main] Completed (3ms)
✓ [google:firebase] Completed (1ms)
✓ [huawei:agconnect] Completed (0ms)
✓ [assets:clean] Completed (11ms)
✓ [ide:config] Completed (0ms)
Flavorization process finished
PS C:\Users\flutter_app>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

change logを見る限り、2.3.0で仕様が変更されているみたいですね。
https://pub.dev/packages/flutter_flavorizr/changelog#230
こちらがIssue側なのかな。
https://github.com/AngeloAvv/flutter_flavorizr/issues/297

そのため作成されないのは、2.3.0以降では仕様なのでしょう。

一応main.dartにはflutter pub run flutter_flavorizrを実行すると、以下のコードが挿入されるようです。

dart

1 F.appFlavor = Flavor.values.firstWhere( 2 (element) => element.name == appFlavor, 3 );

前はエントリポイントを分けて実現していたのをmain.dartのみで実現できるようにしたようです。

投稿2025/04/22 07:33

ta.fu

総合スコア1740

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meex

2025/04/22 07:59

ありがとうございます。 https://github.com/AngeloAvv/flutter_flavorizr/issues/297 こちらを拝見しました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 現在、Flavorを使用するには、「--flavor MY_FLAV」と「-t lib/my_flav.dart」を渡す必要があります。 package:flutter/services.dart には、「appFlavor」という環境変数があります https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/services/flavor.dart コマンドラインでの間違いを減らすために、そのフレーバー文字列を使用し、それをパッケージによって作成された Flavor 列挙型に解析し、複数の main_flavor.dart ファイルを破棄することをお勧めします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー と書かれていたのですが、これは、 ・main_flavor.dart形式は廃止 ・lib内にdev.dartやprod.dartファイルを作ってください ・実行時は「flutter run --flavor dev -t lib/dev.dart」のようにしてください という認識でよろしいでしょうか?
ta.fu

2025/04/22 08:26

> ・main_flavor.dart形式は廃止 たぶんYES。 > ・lib内にdev.dartやprod.dartファイルを作ってください NO. どちらかというと、自動でflavors.dartが作成され、この中にFlavor列挙型とFlavor情報取り出しクラスが入っている。 > ・実行時は「flutter run --flavor dev -t lib/dev.dart」のようにしてください NO. flutter run --flavor dev だけでいいようになった。
guest

0

調べたところ、flavorizrの使用にはXCodeが必要らしく、Windowsで開発している私の環境ではそもそも使えないパッケージであることが分かりました。
https://zenn.dev/mukkun69n/articles/63aecad4a732fa
https://zenn.dev/ymgn____/articles/f087e2fac830a8

標準Windowsでも使えるなどの情報をお持ちの方はぜひご連絡くださいますと幸いです。

投稿2025/04/22 01:38

編集2025/04/22 01:39
meex

総合スコア83

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問