Несколько дней назад я просматривал Твиттер и наткнулся на красивую форму ввода кредитной карты для Интернета и мобильных устройств. Я решил принять это как вызов и реализовать с помощью Flutter. Полный исходный текст доступен здесь.
Приложение состоит из трех основных виджетов, как определено ниже:
- Кредитная карта - основной виджет, содержащий текстовые поля ввода пользователя.
- CreditCardFront - лицевая сторона кредитной карты.
- CreditCardBack - обратная сторона кредитной карты.
Приложение также использует пакет flip_card для выполнения анимации переворота между передним и задним виджетами.
Передняя часть кредитной карты
Когда приложение загружено, пользователю предоставляется пустой заполнитель кредитной карты. За этот интерфейс отвечает виджет CreditCardFront. Интерфейс виджета CreditCardFront состоит из виджета Stack и виджетов Positioned, как показано в реализации ниже:
Мы использовали функцию ClipRRect, чтобы вырезать круглую область, чтобы углы контейнера были скругленными. Мы также использовали размытие фона для контейнера, предоставив изображение с подгонкой BoxFit.cover.
Конструктор CreditCardFront принимает номер и имя кредитной карты в качестве аргументов, которые позже вводятся в виджет.
Возврат кредитной карты
Задняя часть кредитной карты - это просто уменьшенная версия передней части. Единственное отличие состоит в том, что на нем не отображается логотип компании, номер кредитной карты и имя.
Конструктор CreditCardBack принимает защитный код в качестве аргумента, который позже отображается на обратной стороне карты.
Кредитная карта
Виджет CreditCard является родительским виджетом для CreditCardFront и CreditCardBack. Виджет CreditCard также содержит виджет FlipCard, который отвечает за перелистывание спереди назад и наоборот.
FlipCard переворачивается в зависимости от значения cardKey. Мы можем переключать значение cardKey в зависимости от пользовательских условий. Ниже вы можете увидеть, как мы переключаем cardKey в зависимости от того, нажал ли пользователь код безопасности.
В настоящее время Flutter не поддерживает привязки. Было бы здорово, если бы команда Flutter могла потратить время на добавление двусторонней привязки к фреймворку Flutter, поскольку это значительно уменьшит общий код.
Вы можете найти финальную анимацию ниже:
Если вам понравилась эта статья и вы хотите поддержать мою работу, посмотрите мои курсы на Udemy. В настоящее время я работаю над промежуточным курсом по Flutter, который будет доступен в будущем.
Пожалуйста, не используйте номер кредитной карты в видео выше, это моя настоящая кредитная карта. Спасибо!