Проверка ключа виджета Flutter для оценки - PullRequest
0 голосов
/ 04 декабря 2018

На одной моей странице я использую приведенный ниже код для установки уникального ключа, чтобы я мог проверить, нужна ли мне эта страница на другой странице.

class LoginPage extends StatelessWidget{
   LoginPage() : super(key: Key("login"));

   ....
}

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

Для того же, я проверяю, как показано ниже .. Но это не соответствует истине.

Как мне изменить свое состояние, чтобы проверить имя ключа?

if (widget.key == Key("login")) { }

Ниже приведен полный код.

main() {
  runApp(
    MaterialApp(
      home: SilkThreadApp(),
      builder: (BuildContext context, Widget widget) {

        if (widget.key == Key("login")) {
          return widget;
        }

        return Scaffold(
          body: Padding(
            child: widget,
            padding: EdgeInsets.only(bottom: 50.0, right: 0.0),
          ),
        );
      },
    ),
  );
}

1 Ответ

0 голосов
/ 05 декабря 2018

Вы не используете ключи правильно.Ключи используются флаттером для определения того, что и когда нужно отображать.Есть несколько типов ключей, и вы должны прочитать о них.На ваш вопрос, есть довольно простой способ сделать это, наследование.

class BaseStatelessWidget extends StatelessWidget{
    final String widgetType;
    const BaseStatelessWidget({this.widgetType});
}

class LoginPage extends BaseStatelessWidget {
    LoginPage() : BaseStatelessWidget(widgetType:"Login"){
         // You actual constructor code here.
    }
}

Все ваши виджеты без состояния могут распространяться на этот виджет без состояния для widgetType.Вы также можете использовать @required на widgetType, поэтому flutter выдает ошибку, если один виджет написан без widgetType.

. В приведенном выше примере предполагается, что у вас есть несколько виджетов, которые необходимо знать "страница "типа для.Если это только этот виджет, то вам даже не нужно наследование.Просто установите для обязательного поля конструктор LoginPage.

Честно говоря, вам не нужно проверять этот вид страниц, если ваше состояние написано правильно.Это реактивная система.

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