前言
由于前端写多了老是想着用cross-env这种混入系统变量使用,然而在vscode的debugger有点行不通,就发现了一个新的方式
单例模式AppConfig
AppConfig.dart
import 'package:flutter/material.dart';
enum DevMode { sf, ad }
class AppConfig {
DevMode mode;
static AppConfig _appConfig;
factory AppConfig(DevMode mode) {
if (_appConfig != null)
return _appConfig;
else {
_appConfig = AppConfig._init(mode);
return _appConfig;
}
}
static AppConfig getConfig() {
if (_appConfig == null) return throw new ErrorSummary("需要初始化");
return _appConfig;
}
AppConfig._init(this.mode);
}
然后默认你已经有一个main.dart
暴露了MyApp
的Widget组件了,接下来创建不同环境的两个入口文件,下面展示一个就行了
sf.dart
import './config.dart';
import 'package:flutter/material.dart';
import './main.dart';
void main() {
AppConfig(DevMode.sf);
runApp(MyApp());
}
最后配置一下vscode的launch.json
就ok了
// ...
"configurations": [
{
"name": "sf mode",
"request": "launch",
"type": "dart",
"flutterMode": "debug",
"program": "${workspaceFolder}\\lib\\sf.dart"
},
{
"name": "ad mode",
"request": "launch",
"type": "dart",
"flutterMode": "debug",
"program": "${workspaceFolder}\\lib\\ad.dart"
}
]
使用的话var config = AppConfig.getConfig();
就好了