Заявление о возврате с [..._ items] - PullRequest
0 голосов
/ 18 июня 2020

Я не могу понять оператор возврата в приведенном ниже коде.

import 'package:flutter/foundation.dart';
import 'package:GreatPlace/models/place.dart';

class GreatPlaces with ChangeNotifier{

List<Place> _items=[];
List<Place> get item{
  return[..._items];
}
}

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

В Dart он называется Spreading Operator. Пожалуйста, посмотрите приведенный ниже код, если вы хотите объединить два массива.

List<int> _itemsOne = [1, 2, 3];
List<int> _itemsTwo = [4, 5, 6];
final _itemsAll = [..._itemsOne, ..._itemsTwo];
print(_itemsAll); // prints [1, 2, 3, 4, 5, 6]

Вы можете спросить, почему бы не использовать List метод addAll. Скажем, один из ваших List равен null, и если вы добавите еще List, он будет Cra sh.

List<int> _itemsOne;
List<int> _itemsTwo = [4, 5, 6];
_itemsOne?.addAll(_itemsTwo);

Но в операторе распространения, если вы ожидаете массив null, вы можете использовать перед ним нулевой безопасный оператор ?.

List<int> _itemsOne;
List<int> _itemsTwo = [4, 5, 6];
final _itemsAll = [...?_itemsOne, ..._itemsTwo];
print(_itemsAll); // prints [4, 5, 6]
0 голосов
/ 18 июня 2020

'...' - оператор распространения. В вашем примере [] создает объект List, а ..._ items вставляет все объекты из _items в этот список.

Таким образом, в основном item возвращает список с теми же значениями, что и _items.

Обратитесь в этой статье для примера оператора распространения и других функций Dart 2.3: https://medium.com/flutter-community/whats-new-in-dart-2-3-1a7050e2408d '

Этот оператор имеет смысл, если вы хотите создать список, который объединяет другие списки или добавляет дополнительные значения.

Пример:

List<String> items1 = ['a', 'b', 'c'];
List<String> items2 = ['d','e','f'];
List<String> items3 = [...items1, ...items2, '!'];

print(items3);
//[a, b, c, d, e, f, !]
...