行中容器中的文本溢出。扩展不起作用

Text in a container in a row overflows. Expanded doesn't work

提问人:DR4NKR1D3R 提问时间:10/8/2022 最后编辑:Md. Yeasin SheikhDR4NKR1D3R 更新时间:10/8/2022 访问量:43

问:

有很多类似的问题,但在我的情况下都不起作用。我认为它可能与我的构建器小部件有关,但这只是一个猜测,基于我尝试了我能想到的 Expanded、Columns 和 Flexible 的所有组合,但我的 Text 小部件仍然溢出。我让我的文本小部件根据需要换行尽可能多的行。 你能看看吗?

Row messageBubble(String text, bool isMine) {
  return Row(
    mainAxisAlignment: isMine ? MainAxisAlignment.end : MainAxisAlignment.start,
    children: <Widget>[
      Padding(
        padding: const EdgeInsets.all(8),
        child: Container(
          decoration: BoxDecoration(
            color: Colors.white.withOpacity(0.3),
            borderRadius: const BorderRadius.all(
              Radius.circular(20),
            ),
          ),
          child: Padding(
            padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
            child: Text(
              text,
              style: kSmallText,
            ),
          ),
        ),
      ),
    ],
  );
}

还有更多包装我的消息气泡的代码。

SingleChildScrollView(
                  child: StreamBuilder<QuerySnapshot>(
                      stream: FirebaseFirestore.instance
                          .collection("message${item.id}")
                          .orderBy("messageCount", descending: false)
                          .snapshots(),
                      builder: (context, snapshot) {
                        if (snapshot.hasData) {
                          return ListView.builder(
                              physics: const NeverScrollableScrollPhysics(),
                              shrinkWrap: true,
                              itemCount: snapshot.data!.docs.length,
                              itemBuilder: (context, index) {
                                DocumentSnapshot doc =
                                    snapshot.data!.docs[index];
                                lastMessage = doc["messageCount"];
                                return messageBubble(
                                    doc["message"],
                                    Provider.of<UserProvider>(context,
                                                    listen: false)
                                                .userEmail ==
                                            doc["user"]
                                        ? true
                                        : false);
                              });
                        } else {
                          return const Center(
                              child: CircularProgressIndicator());
                        }
                      }),
                ),
flutter dart flutter-layout flutter-text

评论


答:

1赞 Md. Yeasin Sheikh 10/8/2022 #1

用小部件包装顶级小部件。PaddingFlexible

Widget messageBubble(String text, bool isMine) {
  return Row(
    mainAxisAlignment: isMine ? MainAxisAlignment.end : MainAxisAlignment.start,
    children: <Widget>[
      Flexible(
        child: Padding(
          padding: const EdgeInsets.all(8),
          child: Container(
            decoration: BoxDecoration(
              color: Colors.white.withOpacity(0.3),
              borderRadius: const BorderRadius.all(
                Radius.circular(20),
              ),
            ),
            child: Padding(
              padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
              child: Text(
                text,
                // softWrap: true,
              ),
            ),
          ),
        ),
      ),
    ],
  );
}