Несколько экранов с похожими виджетами - как кодировать (Flutter, Dart) - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть проект с несколькими экранами, которые всегда содержат класс с телом и родительским виджетом (который в моем случае является картой).Родительский виджет постоянно имеет похожие атрибуты, но разные дочерние элементы, такие как кнопка, текст или контейнер и т. Д.

Мой вопрос: должен ли я просто каждый раз копировать код родительского виджета (карты) длякаждый экран?Или лучше поместить Карту в другой класс, функцию или виджет, содержащий только Карту (чтобы у меня был полный код Карты только один раз)?

Буду очень признателен, есликто-то может написать пример кода.

1 Ответ

1 голос
/ 04 апреля 2019

У меня была похожая проблема на прошлой неделе.Экран входа в систему и экран регистрации очень похожи, или, по крайней мере, верхняя часть их баннера.

screen shots of login and sign up screens

Что я сделал, чтобы создатьмой собственный виджет для использования на обоих экранах.

Код для этого виджета настройки:

class AuthBanner extends StatelessWidget {
  const AuthBanner({
    Key key,
    @required this.text,
  }) : super(key: key);

  final String text;

  @override
  Widget build(BuildContext context) {
    return Container(
        decoration: BoxDecoration(
            image: DecorationImage(
          image: AssetImage(backdrop),
          fit: BoxFit.cover,
        )),
        height: 220,
        width: double.infinity,
        child: Stack(
          children: [
            Align(
              alignment: Alignment.bottomLeft,
              child: Padding(
                padding: const EdgeInsets.only(left: 30.0, bottom: 20.0),
                child: Text(text.toUpperCase(),
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 32,
                      fontWeight: FontWeight.w600,
                    )),
              ),
            ),
          ],
        ));
  }
}

Это можно использовать аналогично другим виджетам, таким как Text виджет.Например, если я на экране входа в систему, я использую:

AuthBanner(text: "login")

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