Flutter 多环境

什么是多环境,为什么用多环境

配置多环境是开发经常需要用到的操作,实现多环境配置后可以规避生产测试环境混合带来的麻烦和风险,减少项目风险。

多环境可以让你定义一些构建配置,并根据需要进行切换。

我们开发过程中通常会有三个以上的开发环境(开发、生产、演示)。

通过多环境,我们可以给不同的开发需求使用不同的api和图片文字等。而且只需要运行不同的命令就可以。

 

那我们开始写代码吧:

新建一个config.dart的文件,在里面进行多环境的配置。代码如下:

import 'package:flutter/material.dart';

enum Flavor {
  DEVELOPMENT,
  RELEASE,
}

class Config {

  static Flavor appFlavor;

  static String get helloMessage {
    switch (appFlavor) {
      case Flavor.RELEASE:
        return '生产环境';
      case Flavor.DEVELOPMENT:
      default:
        return '开发环境';
    }
  }

  static Icon get helloIcon {
    switch (appFlavor) {
      case Flavor.RELEASE:
        return new Icon(Icons.new_releases);
      case Flavor.DEVELOPMENT:
      default:
        return new Icon(Icons.developer_mode);
    }
  }
}

上面的代码很简单,我想应该不用解释吧

来看看页面my_home.dart:

import 'package:flutter/material.dart';

import 'config.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '多环境',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: '多环境'),
    );
  }
}
class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(

        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new Text(
              'Hello',
              style: Theme
                  .of(context)
                  .textTheme
                  .headline,
            ),
            new Text(Config.helloMessage,
              style: Theme
                  .of(context)
                  .textTheme
                  .display1,
            ),
            Config.helloIcon,
          ],
        ),
      ),
    );
  }
}

 

新建两个文件 main_dev.dart、main_uat.dart

开发环境 main_dev.dart:

import 'config.dart';
import 'my_home.dart';

void main() {
  Config.appFlavor = Flavor.DEVELOPMENT; 
runApp(MyApp());
}

生产环境main_uat.dart:

import 'config.dart';
import 'my_home.dart';

void main() {
  Config.appFlavor = Flavor.RELEASE;
  runApp(MyApp());
}

 

如何使用

运行的时候指定运行哪个版本

flutter run lib/main_dev.dart

编译也是一样

flutter build apk lib/main_dev.dart

如果我们编译的时候想要加上版本号可以这么写

flutter build apk -t lib/main_uat.dart --release --build-number=2 --build-name=1.0.2

 

 

                

 

 

 

 

pub.dev中也有不少的多环境的轮子,大家也都可以看看,方法有很多,主要看个人习惯

本文项目已经上传到 GitHub

posted @ 2020-07-12 13:55  在云端i  阅读(911)  评论(0编辑  收藏  举报