どのように私はフラッタにその値を知ることにより、キーを得るのですか?

ゲオルク:

私は、オブジェクトのマップを持っています:

Map<String, Transaction> _userIncome = {
    'four': Transaction(amount: 450, date: DateTime.now(), title: 'Einkommen', accountType: 'timr', notes: 'joa' , icon: Icon(Icons.today,), id: 'kololdcd', repeat: 'always'),
    'five': Transaction(amount: 60, date: DateTime.now(), title: 'Bruder', accountType: 'timr', notes: 'brother' , icon: Icon(Icons.today,), id: 'kolkfrcd', repeat: 'never'),
    'six': Transaction(amount: 60, date: DateTime.now(), title: 'Rückerstattung', accountType: 'timr', notes: 'brother' , icon: Icon(Icons.today,), id: 'kolofkfrcd', repeat: 'never'),
};

そして私は、私はそのキーでエントリを削除できるように、私は(値が一意である)の値を知っていれば、キーを取得したいと思います:

_userIncome.remove(key);

私は与えられた値を持つエントリを識別することができます:

_userIncome.values
    .where((t) => t.date.difference(datte).inDays == 0 && t.id == transactionId);

しかし、私はので、私は、エントリを削除することができ、一致するキーを取得する方法見当もつかない。またはその値によって削除ANエントリーする方法はありますか?

私はいくつかのアドバイスを聞くのが大好きだ:)

過酷なBhikadia:

単に使うremoveWhere直接エントリを削除します。次の例であります:

 _userIncome.removeWhere((k,t) => t.date.difference(datte).inDays == 0 && t.id == transactionId);

(むしろ、またはエントリ)のインデックスを取得するために、以下のような何かを実行します。

final key = _userIncome.entries
      .firstWhere(
        (entry) => entry.date.difference(datte).inDays == 0 && entry.id == transactionId,
        orElse: () => null,
      )
      ?.key;

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=7768&siteId=1