【问题标题】:object query and remove parentheses in dart, flutter对象查询和删除飞镖,颤振中的括号
【发布时间】:2020-06-08 16:33:48
【问题描述】:

喂?我正在使用颤振提供者模式构建一个应用程序。并且我创建了一个流程来查询对象内部的值。我的模型 dart 文件中也有数据。

检查下面的代码。

List<Device> _devices = [
    Device(one: 'apple', two: 'iphone'),
    Device(one: 'samsung', two: 'galaxy')
];


String Query(String value) {
    return _media.where((medium) => medium.one == value)
                    .map((medium) => (medium.two)).toString();

Query("apple")

因此,当我调用该函数时,我希望返回 iphone。但结果来自(iphne)。其实我知道为什么。毕竟返回的数据是List&lt;Device&gt;类型。但我想要的是通过仅返回查询列表中的第一个值(仅表示查询列表,而不是完整列表)来删除括号。换句话说,我想收到iphone,而不是(iphone)。目前,我正在使用substring 删除第一个和最后一个单词,这似乎有一些限制。有什么方法可以删除该逻辑中的括号?

【问题讨论】:

    标签: list flutter dart where-clause flutter-provider


    【解决方案1】:

    你有括号是因为你在列表中调用.toString()

    return _media.where((medium) => medium.one == value)
      .map((medium) => (medium.two))
      .toString();
    

    要仅返回 .two 或第一个找到的对象,您只需:

    return _media.firstWhere(
      (medium) => medium.one == value, orElse: () => null)?.two;
    

    这将返回第一个找到的对象的.two 的值,如果没有找到,则返回null

    文档:Iterable.firstWhere()

    【讨论】:

    • 谢谢。 firstWhere 似乎只接受一个论点。我尝试删除第二个参数,但我只得到 -- Bad state: No element -- error。
    • 通过更改解决的问题... return _media.firstWhere( (medium) =&gt; medium.one == value, orElse: () =&gt; null)?.two;
    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2020-08-12
    • 2020-12-25
    • 2020-11-05
    • 1970-01-01
    相关资源
    最近更新 更多