常量创建的参数必须是Flutter上的常量表达式 [英] Arguments of a constant creation must be constant expressions on Flutter

查看:329
本文介绍了常量创建的参数必须是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上的常量表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆