本文介绍了常量创建的参数必须是Flutter上的常量表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用了Flavor并定义了两个主要的类。而且我还使用了Chopper。如何设置基于baseUrl的环境?
I used Flavor and define two main classes. And also I used Chopper. How to set baseUrl based one environment?
import 'package:meta/meta.dart';
enum BuildFlavor { production, development }
BuildEnvironment get env => _env;
BuildEnvironment _env;
class BuildEnvironment {
final String ssoBaseUrl;
final BuildFlavor flavor;
BuildEnvironment._init(
{this.ssoBaseUrl,
this.flavor});
static void init(
{@required flavor,
@required ssoBaseUrl}) =>
_env ??= BuildEnvironment._init(
flavor: flavor,
ssoBaseUrl: ssoBaseUrl);
}
main.dev.dart
main.dev.dart
void main() {
BuildEnvironment.init(
flavor: BuildFlavor.development,
ssoBaseUrl: 'http://15.88.219.20');
assert(env != null);
runApp(MultiProvider(
providers: globalProviders,
child: MyApp(),
));
}
斩波器
@ChopperApi(baseUrl:'${env.ssoBaseUrl}')
abstract class Services extends ChopperService {
static Services create([ChopperClient client]) => _$Services(client);
@Post(path: '/sso-dev/registration')
Future<Response> registerPost(
错误消息
推荐答案
必须提供注释只能使用 const
值。由于 env
是一个吸气剂属性,因此它不是 const
。恐怕您将无法通过这种方式指定 baseUrl
。
Annotations have to be provided with const
values only. Since env
is a getter property, it is not const
. I'm afraid you won't be able to specify a baseUrl
this way.
这篇关于常量创建的参数必须是Flutter上的常量表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!