Skip to content

Commit 64ee864

Browse files
committed
Access flavor and FlavorSettings in Flutter
1 parent 0992842 commit 64ee864

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

lib/flavor_settings.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/// Contains the hard-coded settings per flavor.
2+
class FlavorSettings {
3+
final String apiBaseUrl;
4+
// TODO Add any additional flavor-specific settings here.
5+
6+
FlavorSettings.dev() : apiBaseUrl = 'https://dev.flutter-flavors.chwe.at';
7+
8+
FlavorSettings.live() : apiBaseUrl = 'https://flutter-flavors.chwe.at';
9+
}

lib/main.dart

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,33 @@
11
import 'package:flutter/material.dart';
2+
import 'package:flutter/services.dart';
3+
4+
import 'flavor_settings.dart';
5+
6+
Future<void> main() async {
7+
// NOTE: This is required for accessing the method channel before runApp().
8+
WidgetsFlutterBinding.ensureInitialized();
9+
10+
final settings = await _getFlavorSettings();
11+
print('API URL ${settings.apiBaseUrl}');
212

3-
void main() {
413
runApp(MyApp());
514
}
615

16+
Future<FlavorSettings> _getFlavorSettings() async {
17+
String flavor =
18+
await const MethodChannel('flavor').invokeMethod<String>('getFlavor');
19+
20+
print('STARTED WITH FLAVOR $flavor');
21+
22+
if (flavor == 'dev') {
23+
return FlavorSettings.dev();
24+
} else if (flavor == 'live') {
25+
return FlavorSettings.live();
26+
} else {
27+
throw Exception("Unknown flavor: $flavor");
28+
}
29+
}
30+
731
class MyApp extends StatelessWidget {
832
// This widget is the root of your application.
933
@override

0 commit comments

Comments
 (0)