【问题标题】:Arguments of a constant creation must be constant expressions on Flutter常量创建的参数必须是 Flutter 上的常量表达式
【发布时间】:2020-03-31 07:04:34
【问题描述】:

我使用了 Flavor 并定义了两个主要类。我还使用了 Chopper。如何设置基于 baseUrl 的环境?

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

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(

错误信息

【问题讨论】:

  • 为什么要否决我的问题?
  • 你能得到这份工作吗?
  • @HardikAmal 我使用http 而不是chopper

标签: flutter dart


【解决方案1】:

注释必须仅提供const 值。因为env 是一个getter 属性,所以它不是const。恐怕您无法通过这种方式指定baseUrl

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 2021-03-08
    • 2014-11-13
    • 1970-01-01
    • 2017-02-24
    • 2014-11-09
    相关资源
    最近更新 更多