Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何使用不同的资产实现颤振风格?_Flutter_Dart - Fatal编程技术网

Flutter 如何使用不同的资产实现颤振风格?

Flutter 如何使用不同的资产实现颤振风格?,flutter,dart,Flutter,Dart,我已经创建了一个颤振应用程序,我想在上面设置3种口味。它们中的每一个都有不同的字体、不同的图像集和不同的字符串文件集。 如何使用特定的字体、图像和字符串文件来实现特定的风格? 提前谢谢 您可以创建应用程序配置文件 import 'package:flutter/material.dart'; enum Flavor { FLAV1, FLAV2 } class AppConfig extends InheritedWidget { final String appTitle; fin

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

您可以创建应用程序配置文件

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

在访问这些资源时,您可以使用flavors的索引来获取资源

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);
}

请参考。

为我工作!!!!谢谢:)