Виджет Flutter Dismissable onDismissed не срабатывает - PullRequest
0 голосов
/ 21 июня 2020

У меня есть 3 раздела, один - это виджет ClassList, который содержит скрытые виджеты. ClassList имеет параметр функции _refreshGPA, который называется методом setState () для перестройки экрана. Итак, при запуске onDismissed метод _refreshGPA, вызываемый виджетом ClassList, и элемент списка удаляются правильно. Все работает.

body: Column(
    children: <Widget>[
      _buildClassForm(context),
      GPAHeader(gpa: gpa),
      ClassList(_classList, _refreshGPA),
    ],
  ),

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

body: OrientationBuilder(
    builder: (context, orientation) {
      if (orientation == Orientation.portrait) {
        return _bodyPortraitMode(context);
      } else {
        return _bodyLandscapeMode(context);
      }
    },
  ),

Widget _bodyPortraitMode(BuildContext context) {
return Container(
  child: Column(
    children: <Widget>[
      _buildClassForm(context),
      GPAHeader(gpa: gpa),
      ClassList(_classList, _refreshGPA),
    ],
  ),
);

Widget _bodyLandscapeMode(BuildContext context) {
return Container(
  child: Row(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: <Widget>[
      Expanded(
        child: _buildClassForm(context),
        flex: 1,
      ),
      Expanded(
        child: Column(
          children: <Widget>[
            GPAHeader(gpa: gpa),
            ClassList(_classList, _refreshGPA),
          ],
        ),
        flex: 1,
      )
    ],
  ),
);

Я попробовал только эти два метода, перейдя в тело, и все работает нормально. Но при обертывании OrientationBuilder элемент списка не удаляется.

Спасибо за любую помощь! И извините за орфографическую ошибку, англ. не мой основной язык.

1 Ответ

0 голосов
/ 27 июня 2020

На основе этой страницы https://github.com/flutter/flutter/issues/48290, я генерирую виджеты Scaffold для каждого режима макета, а затем возвращаюсь в блоке if-else. Надеюсь, это кому-то поможет.

...