Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtOpObIC 22 of 113 menu
◀ ▶

Класс внутри класса в Dart

Класс можно объявить внутри другого класса. Такой вложенный класс не видит поля внешнего объекта. К нему обращаются через имя внешнего типа:

class Log { class Line { String text; Line(this.text); } }

Создадим объект и выведем его:

var line = Log.Line("ok"); print(line.text);

Если вложенному классу нужны данные конкретного внешнего объекта, их передают через конструктор. Создадим заказ и строку с номером заказа и заголовком:

class Order { int id; Order(this.id); class Line { int orderId; String title; Line(this.orderId, this.title); String label() { return "$orderId $title"; } } }

Создадим объект и вызовем метод:

var line = Order.Line(7, "pen"); print(line.label());

Когда поле внутреннего класса называется так же, как поле внешнего, значение снаружи передают отдельным параметром конструктора:

class Box { String name; Box(this.name); class Item { String boxName; String name; Item(this.boxName, this.name); String both() { return "$boxName $name"; } } }

Сделайте класс Catalog с вложенным классом Item: название и цена. Создайте Item через имя Catalog и выведите название.

Сделайте класс Cart с названием и класс Row с полем title. Передайте название корзины в конструктор Row. Метод Row.tag() возвращает название корзины и title. Создайте корзину "main", строку "pen" и выведите tag().

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить