showModalBottomSheet запускает Futurebuilder - PullRequest
0 голосов
/ 08 октября 2019

Я действительно расстроен этим.

У меня есть 3 функции, которые вызывают showModalBottomSheet в каждой функции.

2 Модалов с состоянием и 1 без состояния.

У меня проблема с другим Stateful модалом.

Они оба вызываются с помощью функции InkWell's onTap. и оба также не занимают весь экран, поэтому показывает главную страницу.

МОЙ СТАТУСНЫЙ МОДАЛЬ, КОТОРЫЙ НЕ ТРЕБУЕТ БУДУЩЕЕ / НЕ ОБНОВЛЯЕТ СТРАНИЦУ:

void showCommentsModal(int id) {
    showModalBottomSheet(
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(20.0),
      ),
      backgroundColor: Color(colorBackground),
      isScrollControlled: true,
      context: context,
      builder: (BuildContext context) {
        return Container(
          padding: EdgeInsets.all(10),
          decoration: BoxDecoration(
              color: Color(colorBackground),
              borderRadius: BorderRadius.only(
                  topLeft: Radius.circular(20), topRight: Radius.circular(20))),
          height: MediaQuery.of(context).size.height / 1.5,
          width: MediaQuery.of(context).size.width,
          child: ViewCommentModal(
            postID: id,
            userList: userList,
          ),
        );
      },
    );
  }

ДРУГОЕУСТОЙЧИВЫЙ МОДАЛЬ, КОТОРЫЙ СЛЕДУЕТ БУДУЩЕМ / ОБНОВЛЯЕТ СПИСОК:

 addCommentModal(int i) {
    showModalBottomSheet(
      context: context,
      builder: (BuildContext context) {
        return Container(
          padding:
              EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
          child: AddCommentModal(
            onPost: (String text) {
              APIServices.commentPost(context, i.toString(), text);
              Navigator.pop(context);
            },
          ),
        );
      },
    );
  }

что заставляет addCommentModal запускать будущее? пожалуйста, помогите.

РЕДАКТИРОВАТЬ : Я поймал подозреваемого! вот мой AddCommentModal код:

class AddCommentModal extends StatefulWidget {
  final ValueChanged<String> onPost;

  AddCommentModal({@required this.onPost});

  @override
  _AddCommentModalState createState() => _AddCommentModalState();
}

class _AddCommentModalState extends State<AddCommentModal> {
  final commentController = TextEditingController();
  String defaultProfilePhoto = "";
  @override
  void initState() {
    defaultProfilePhoto = Constants.userFirstName[0].toUpperCase();
    super.initState();
  }

  @override
  void dispose() {
    commentController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
        padding: EdgeInsets.all(10),
        child: Row(
          children: <Widget>[
            Container(
              width: 50,
              height: 50,
              child: ClipRRect(
                  borderRadius: new BorderRadius.circular(50),
                  child: Constants.userProfilePhoto == null
                      ? Container(
                          color: Color(colorPrimary),
                          alignment: Alignment.center,
                          child: Text(
                            defaultProfilePhoto,
                            style: TextStyle(
                                color: Color(colorText), fontSize: 20),
                          ),
                        )
                      : Image.network(
                          APIServices.httpDomain + Constants.userProfilePhoto,
                          fit: BoxFit.cover,
                        )),
            ),
            Expanded(
                child: Container(
              margin: EdgeInsets.only(
                left: 10,
              ),
              child: TextFormField(
                controller: commentController,
                decoration: new InputDecoration(
                    suffixIcon: IconButton(
                        onPressed: () => widget.onPost(commentController.text),
                        icon: Icon(
                          FontAwesomeIcons.paperPlane,
                          size: 15,
                          color: Theme.of(context).primaryColor,
                        )),
                    contentPadding: EdgeInsets.all(10),
                    hintText: "Add a comment ...",
                    fillColor: Colors.white,
                    border: new OutlineInputBorder(
                      borderRadius: new BorderRadius.circular(20.0),
                    ),
                    focusedBorder: OutlineInputBorder(
                        borderRadius: BorderRadius.all(Radius.circular(20)),
                        borderSide:
                            BorderSide(width: 1, color: Color(0xFFff8b50)))),
                keyboardType: TextInputType.text,
                style: new TextStyle(fontFamily: "Poppins", fontSize: 15),
              ),
            ))
          ],
        ));
  }
}

Проблема, котораявызывает обновление страницы из-за SoftKeyboard , который всплывает всякий раз, когда фокусируется TextFormField.

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

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