有没有办法在函数调用中仅在参数值不为空的情况下传递命名参数?

我有以下方法:

String concatenatesAddressData({String? city = 'Marília', String? state = 'São Paulo', String? country = 'Brasil'}) => ' - $city, $state, $country';

但是,我在参数中通知的值从API返回,该API可能提供数据,也可能不提供数据,因此我不能按如下方式传递参数,因为我可以将空值赋给其中一个参数:

String _dataPlace = concatenatesAddressData(city: place.country, state: place.state); // city and state are null

结果是:

" - null, null, Brasil"

有没有办法通知所有参数,如果它为空,就保持参数的缺省值,保持我使用的语法?

或者是否有必要更改方法,如下所示?

String concatenatesAddressData({city, state, country}) {
    String _city = city ?? 'Marília';
    String _state = state?? 'São Paulo';
    String _country = country ?? 'Brasil';

    return ' - $_city, $_state, $_country';
}

推荐答案

您不需要使用中间变量,并且可以

String concatenatesAddressData({String? city, String? state, String? country}) => ' - ${city ?? 'Marília'}, ${state ?? 'São Paulo'}, ${country ?? 'Brasil'}';

Flutter相关问答推荐

未处理异常:字符串类型不是值类型子类型的子类型'

如何在Flutter的easy_translation包中链接嵌套的链接翻译?

如何为Android 12及以上设备以及Android 11及以下设备动态处理Splash Screen?如果可能的话没有包裹

在Flutter 中将参数从一个类传递到另一个类

如何让一个名为ONTAP的回调函数、另一个名为onTapDown的回调函数和另一个名为onTapUp的回调函数不重叠?

Flutter creating Constant.dart InputDecoration section put pass in hintText

如何实现Flutter 梳理机图像的小量移动

为什么当我使用Riverpod更新状态时,列表会被刷新?

将列表<;Events>;从Flutter 应用程序中的函数传回EventLoader属性时出错

将Riverpods NotifierProvider与State类一起使用

如何确定Flutter 中的文本 colored颜色 ?

在Flutter 小部件测试中找不到框中的AssetImage装饰

BaseInputfield和Textfield有什么不同?

Flutter - Riverpod 2.0 - 如何访问 onDispose 回调?

Flutter - Stripe:类型List 不是类型Map 的子类型? method_channel_stripe.dart 中的错误:263

显示图像的放大部分

忽略异步函数上的 context.mounted 访问 linting 错误是否安全?

如何在 Flutter 中使用简写 IF 禁用单选按钮?

我的主屏幕上的 FutureBuilder 不断重新加载(但仅在其他屏幕上时)?

在 FAB 上添加表格小部件单击 FLUTTER