【问题标题】:How to use different assets for flutter flavor implementation?如何使用不同的资产来实现 Flutter 风味?
【发布时间】:2023-04-03 06:27:01
【问题描述】:

我创建了一个颤振应用程序,我想在其上设置 3 种风格。他们每个人都有不同的字体,不同的图像集和不同的字符串文件集。 我如何使用特定的字体、图像和字符串文件来实现特定的风格? 提前致谢!

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您可以创建应用配置文件。

    import 'package:flutter/material.dart';
    
    enum Flavor { FLAV1, FLAV2 }
    
    class AppConfig extends InheritedWidget {
      final String appTitle;
      final String buildFlavor;
      final Flavor flavor;
      final Widget child;
      final ThemeData themeData;
      final String s3BucketURL;
      final String stripeKey;
    
      AppConfig(
          {@required this.appTitle,
          @required this.buildFlavor,
          @required this.themeData,
          @required this.flavor,
          @required this.s3BucketURL,
          @required this.stripeKey,
          @required this.child});
    
      @override
      bool updateShouldNotify(covariant InheritedWidget oldWidget) => false;
    
      static AppConfig of(BuildContext context) {
        return context.dependOnInheritedWidgetOfExactType();
      }
    }
    

    创建文件夹 资产/ 资产/1/ 资产/2/

    添加到 pubspec.yaml

    您可以在访问这些资产时使用风味索引来获取资产。

    SvgPicture.asset(
                        'assets/${AppConfig.of(context).flavor.inex}/splash_logo.svg',
                        colorBlendMode: BlendMode.srcIn,
                        color: Theme.of(context).primaryColor,
                      )
    

    您可以在初始化时添加不同的应用配置文件。创建不同的主文件,如 main_flav1.dart、main_flav2.dev。

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      var configureApp = AppConfig(
        appTitle: 'App staging',
        buildFlavor: 'Staging',
        flavor: Flavor.FLAV1,
        themeData: PreOrderTheme.flav1Theme,
        stripeKey: 'pk_s',
        s3BucketURL: 'https://sssss.net',
        child: PreOrderApp(repository: Repository(baseURL:"https://webapi.net/api")),
      );
      return runApp(configureApp);
    }
    

    请参考https://medium.com/@animeshjain/build-flavors-in-flutter-android-and-ios-with-different-firebase-projects-per-flavor-27c5c5dac10b

    【讨论】:

    • 但是所有资产都将加载到应用程序中并增加它们的大小......
    猜你喜欢
    • 2017-04-25
    • 2022-07-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2015-10-06
    • 2020-12-10
    相关资源
    最近更新 更多