Какая польза от: в функции Dart? - PullRequest
0 голосов
/ 16 июня 2019

Я тестирую какое-то приложение Flutter и сталкиваюсь: в функции Dart, для чего оно используется?

Я нашел его в учебнике по Firebase для флаттера. Я пытался найти его в Google, но ничего не могу найти.

class Record {
  final String name;
  final int votes;
  final DocumentReference reference;

  Record.fromMap(Map<String, dynamic> map, {this.reference})
      : assert(map['name'] != null),
        assert(map['votes'] != null),
        name = map['name'],
        votes = map['votes'];

  Record.fromSnapshot(DocumentSnapshot snapshot)
      : this.fromMap(snapshot.data, reference: snapshot.reference);

  @override
  String toString() => "Record<$name:$votes>";
}

Результат работает нормально, я просто хочу знать, для чего:

1 Ответ

1 голос
/ 16 июня 2019

Получено из https://dart.dev/guides/language/language-tour, Конструктор секции:

  1. Суперкласс

Укажите конструктор суперкласса после двоеточия (:), непосредственно передтело конструктора (если есть).

class Employee extends Person {
  Employee() : super.fromJson(getDefaultData());
  // ···
}
Переменные экземпляра

Помимо вызова конструктора суперкласса, вы также можете инициализировать переменные экземпляра до запуска тела конструктора.Разделите инициализаторы запятыми.

// Initializer list sets instance variables before
// the constructor body runs.
Point.fromJson(Map<String, num> json)
    : x = json['x'],
      y = json['y'] {
  print('In Point.fromJson(): ($x, $y)');
}

Ваш пример:

Так что в вашем случае fromMap -Metod делает некоторые утверждения (перед запуском конструктора)) и присваивает переменные name и vote.Поскольку эти переменные являются окончательными, они должны быть назначены до инициализации экземпляра записи!

fromSnapshot просто использует fromMap в качестве супер-конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...