我创建了一个 flutter 应用程序,我想在其上设置 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();
  }
}
Run Code Online (Sandbox Code Playgroud)
创建文件夹资产/资产/1/资产/2/
添加到 pubspec.yaml
您可以在访问这些资产时使用风味索引来获取资产。
SvgPicture.asset(
                    'assets/${AppConfig.of(context).flavor.inex}/splash_logo.svg',
                    colorBlendMode: BlendMode.srcIn,
                    color: Theme.of(context).primaryColor,
                  )
Run Code Online (Sandbox Code Playgroud)
您可以在初始化时添加不同的应用程序配置文件。创建不同的主文件,如 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);
}
Run Code Online (Sandbox Code Playgroud)
请参考https://medium.com/@animeshjain/build-flavors-in-flutter-android-and-ios-with- Different-firebase-projects-per-flavor-27c5c5dac10b 。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3393 次  |  
        
|   最近记录:  |