Flutter simple productFlavors

Andrew Chen
1 min readDec 10, 2019

Draft

Without productFlavors:

main.dart:

void main() async {
runApp(MyApp(key: appKey));
}
class MyApp extends StatelessWidget {
Widget build(context) => MaterialApp(
// ...
);
}

With productFlavors:

flutter build apk -t lib/main.dev.dart --flavor dev

main.dev.dart:

void main() async {
R.initialize(R$Dev());
runApp(MyApp());
}

app.dart:

class MyApp extends StatelessWidget {
Widget build(context) => MaterialApp(
// ...
body: Text(R.of.api_base_url)
);
}

r.dart:

class R {
String get api_base_url => "http://example.com/";

static R _current;
static void initialize(R value) => _current = value; static R get of {
_current ??= R();
return _current;
}
}

r.dev.dart:

class R$Dev extends R {
@override
String get api_base_url => "http://dev.example.com/";
}

--

--