Ошибка с построителем потока: неправильное использование ParentDataWidget - PullRequest
0 голосов
/ 23 апреля 2020

Я столкнулся со странной проблемой. Я не знаю причину проблемы.

Проблемы не было, но она внезапно появилась. У меня есть список чатов с использованием двух потоковых построителей, каждый из которых содержит имя и изображение профиля. Проблема в том, что в прямоугольнике оказалось слишком длинное место с именем и сообщением, я не знаю почему.

До проблемы:

enter image description here

После проблемы:

enter image description here

Ошибка на вкладке запуска

enter image description here

Обозначения: На симуляторе все работает нормально, но на реальном устройстве проблема проявляется.

Мой код:

body: ListView(
          children: <Widget>[
            Column(
              children: <Widget>[
                Container(
                  width: MediaQuery.of(context).size.width,
                  child: Stack(
                    children: <Widget>[
                      StreamBuilder(
                        stream: Firestore.instance
                            .collection(MESSAGES_COLLECTION)
                            .document(widget.myuid)
                            .collection(CHAT_MESSAGES)
                            .orderBy('timestamp',descending: true)
                            .snapshots(),
                        builder: (context, snapshot) {
                          if (!snapshot.hasData) {
                            const Text('Loading...');
                          } else {
                            return ListView.builder(
                                physics: NeverScrollableScrollPhysics(),
                                shrinkWrap: true,
                                scrollDirection: Axis.vertical,
                                itemCount: snapshot.data.documents.length,
                                itemBuilder: (context, index) {
                                  DocumentSnapshot mymessage =
                                  snapshot.data.documents[index];

                                  return Stack(
                                    children: <Widget>[
                                      Column(
                                        children: <Widget>[
                                          Container(
                                            decoration: BoxDecoration(

                                            ),
                                            child:StreamBuilder(
                                              stream: Firestore.instance
                                                  .collection(MESSAGES_COLLECTION)
                                                  .document(widget.myuid)
                                                  .collection(CHAT_MESSAGES)
                                                  .document(mymessage.documentID)
                                                  .collection(BETWEEN_US)
                                                  .orderBy('timestamp',descending: true)
                                                  .snapshots(),
                                              builder: (context, snapshot){
                                                switch (snapshot.connectionState) {
                                                  case ConnectionState.waiting:
                                                    return SizedBox();
                                                  case ConnectionState.active:
                                                  default:
                                                    break;
                                                }
                                                if (snapshot.hasError) print(snapshot.error);
                                                DocumentSnapshot lastmessege = snapshot.data.documents[0];

                                                return  StreamBuilder(
                                                  stream: Firestore.instance
                                                      .collection(USERS_COLLECTION)
                                                      .where('uid', isEqualTo: mymessage.documentID)
                                                      .snapshots(),
                                                  builder: (context, snapshot){
                                                    switch (snapshot.connectionState) {
                                                      case ConnectionState.waiting:
                                                        return SizedBox();
                                                      case ConnectionState.active:
                                                      default:
                                                        break;
                                                    }
                                                    if (snapshot.hasError) print(snapshot.error);
                                                    DocumentSnapshot user = snapshot.data.documents[0];

                                                    return  InkWell(

                                                      onTap: () {
                                                        if (mymessage.documentID
                                                            .toString() !=
                                                            widget
                                                                .myuid
                                                                .toString()) {
                                                          User userMessage = User(
                                                            devtoken: user['devtoken'],
                                                            devlang: user['devlang'],
                                                            uid: user['uid'],
                                                            name: user['name'],
                                                            username: user['uname'],
                                                            profilePhoto: user['uimg'],
                                                          );
                                                          Navigator.push(context, MaterialPageRoute(
                                                              builder: (context) => ChatScreen(
                                                                myapplang: widget.myapplang,
                                                                receiver: userMessage,
                                                              )
                                                          ));
                                                        }
                                                      },

                                                      child: ListTile(
                                                        contentPadding:
                                                        EdgeInsets
                                                            .symmetric(
                                                            horizontal:
                                                            10.0,
                                                            vertical:
                                                            20.0),
                                                        leading:  ClipRRect(
                                                          borderRadius:
                                                          BorderRadius.circular(
                                                              35.0),
                                                          child: CachedNetworkImage(
                                                            imageUrl: user[
                                                            'uimg'],
                                                            width: 50.0,
                                                            height: 50.0,
                                                          ),
                                                        ),
                                                        title: Flexible(child: Text(user['name'],style: TextStyle(color: Colors.white,fontSize: 18),),),
                                                        subtitle: lastmessege['message'] != "IMAGE" ?  Text(lastmessege['message'],style: TextStyle(color: Colors.white,fontSize: 15),) :
                                                        Padding(
                                                          padding: EdgeInsets.only(top: 15.0,left: 25.0),
                                                          child: Align(
                                                            alignment: Alignment.centerLeft,
                                                            child: ClipRRect(
                                                              borderRadius:
                                                              BorderRadius.circular(
                                                                  5.0),
                                                              child: CachedNetworkImage(
                                                                imageUrl: lastmessege['uimg'],
                                                                height: 40,
                                                                width: 40,
                                                              ),
                                                            ),
                                                          ),
                                                        ),
                                                        // subtitle: Text("Intermediate", style: TextStyle(color: Colors.white)),
                                                      ),
                                                    );
                                                  },

                                                );
                                              },

                                            ),
                                          ),
                                          Divider(color: Colors.purple,),
                                        ],
                                      ),
                                    ],
                                  );
                                });
                          }
                          return Container(
                            height: 0.0,
                            width: 0.0,
                          );
                        },
                      ),
                    ],
                  ),
                ),
              ],
            ),
          ],
        ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...