вступление
В этом руководстве я покажу вам, как создать многоразовый виджет с помощью Flutter и Dart.
Язык Dart строго типизирован и создан Google. Он имеет сходство с JavaScript, Java и C. Так что, если вы работаете с одним из них, вы должны очень быстро освоиться с Dart.
Flutter - это фреймворк, написанный на Dart, для простого и быстрого написания кроссплатформенных нативных приложений. Вы пишете одно приложение, которое можно построить как для мобильного приложения Android (Java или Kotlin), так и iOS (Objective-C или Swift).
Для продолжения этой статьи и реализации нашего многоразового виджета рекомендуется иметь;
- Базовые навыки программирования
- Flutter SDK 1.7+
- Эмулятор Android / iOS или реальное устройство
Виджет
Во Flutter все представляет собой виджет. Это класс Dart, который действует практически так же, как компонент. У вас есть два вида виджетов:
- Виджет без сохранения состояния - у него нет состояния
- Виджет с отслеживанием состояния - у него есть состояние
Для примера многоразового виджета я покажу только виджет без сохранения состояния:
Многоразовый виджет без сохранения состояния
Вместо того, чтобы каждый раз создавать совершенно новый экран, мы собираемся сделать экран многоразового использования (см. Изображение ниже), на котором мы можем изменить следующие вещи:
- Заголовок верхней страницы
- Название карты
- Подзаголовок карты
- Значок карты
- Действие кнопки отмены
- Действие кнопки продолжения
На этот новый экран мы можем перемещаться и передавать все наши пользовательские данные.
Кодирование многоразового экрана
В нашем примере мы используем виджеты в стиле material
. Начнем с создания нового экрана - класса ReusableScreen
. Мы расширяем StatelessWidget
, потому что на нашем экране нет состояния.
На изображении ниже показано, что мы добавляем шесть свойств, каждое из которых имеет свой собственный тип.
- Три типа
String
дляscreenTitle
,tileTitle
иtileSubtitle
- Один
IconData
тип для нашегоtitleIcon
- Два типа
Function
дляcancelButtonAction
иproceedButtonAction
Все наши свойства final
, потому что мы хотим передать данные на наш экран только один раз.
Внутри конструктора ReusableScreen
мы обращаемся к нашим локальным свойствам и делаем их обязательными, добавляя перед ним @required
.
Затем мы переопределяем метод StatelessWidget
build
. Мы возвращаем Scaffold, где передаем screenTitle
в AppBar
.
В теле у нас есть Card
, у которого есть ребенок Column
. Мы устанавливаем mainAxisSize
на минимум и передаем несколько дочерних виджетов.
В верхней части карточки нам нужен виджет ListTile
, в который мы можем передать наши tileIcon
, tileTitle
и tileSubtitle
.
Внизу карточки нам нужны кнопки, которые содержат действие. Здесь передаются cancelButtonAction
и proceedButtonAction
, когда нажата определенная кнопка.
Реализация многоразового экрана
Где-то в нашем приложении мы хотим перейти к нашему ReusableScreen
. В этом случае у нас есть метод onTap
(который можно найти в кнопке). В этом методе мы используем виджет Navigator
Flutter и хотим push
наш экран, чтобы мы могли его посетить. Навигацию можно сделать так, как вы хотите.
Затем мы помещаем наш виджет ReusableScreen
в метод push
. Теперь мы можем передавать наши собственные аргументы, см. Изображение ниже.
Теперь мы можем повторно использовать этот виджет через приложение!