【问题标题】:listView and row view creation problems flutterlistView 和行视图创建问题扑朔迷离
【发布时间】:2021-06-23 01:54:59
【问题描述】:

我的 listView 在没有 Row 代码的情况下可以正常工作,但我需要在 ListView 的最后一个元素下放置一个文本字段和一个按钮。两者在同一高度。这就是我考虑使用 Row 的原因。但是如果我尝试在我的 listView 下编写它并启动应用程序,我什么也看不到,甚至 listView 也看不到。作为一个错误,它只报告给我:

相关的导致错误的小部件是: ListView file:///Users/apple/Desktop/Work%202021/toduba-merchant/lib/tabs/home_tab.dart:95:22 抛出异常时,这是堆栈: #0 RenderViewportBase._paintContents (package:flutter/src/rendering/viewport.dart:649:25) #1 RenderViewportBase.paint (package:flutter/src/rendering/viewport.dart:641:7) #2 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7) #3 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:140:11) #4 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:100:5) ... 引发异常时正在处理以下 RenderObject:RenderViewport#ba090 ...需要合成 ... parentData:(可以使用大小) ... 约束:BoxConstraints(w=375.0, h=474.9) ... 层:OffsetLayer#32030 已分离 ...引擎层:Null#007db ...偏移量:偏移量(0.0,0.0) ...尺寸:尺寸(375.0、474.9) ...轴方向:向下 ... crossAxisDirection: 右 ... 偏移量:ScrollPositionWithSingleContext#d8a7b(偏移量:0.0,范围:null..null,视口:474.9,ScrollableState,BouncingScrollPhysics -> RangeMaintainingScrollPhysics,IdleScrollActivity#f75ff,ScrollDirection.idle) ...锚:0.0 渲染对象:RenderViewport#ba090 需要合成 parentData:(可以使用大小) 约束:BoxConstraints(w=375.0, h=474.9) 层:OffsetLayer#32030 已分离 引擎层:Null#007db 偏移量:偏移量(0.0,0.0) 尺寸:尺寸(375.0、474.9) 轴方向:向下 交叉轴方向:右 偏移量:ScrollPositionWithSingleContext#d8a7b(偏移量:0.0,范围:null..null,视口:474.9,ScrollableState,BouncingScrollPhysics -> RangeMaintainingScrollPhysics,IdleScrollActivity#f75ff,ScrollDirection.idle) 锚:0.0 ...中心孩子:RenderSliv​​erPadding#7222a relayoutBoundary=up1 NEEDS-PAINT ...需要合成 ... parentData:paintOffset=Offset(0.0, 0.0) (可以使用大小) ...约束:SliverConstraints(AxisDirection.down,GrowthDirection.forward,ScrollDirection.idle,scrollOffset:0.0,remainingPaintExtent:474.9,crossAxisExtent:375.0,crossAxisDirection:AxisDirection.right,viewportMainAxisExtent:474.9,remainingCacheExtent:724.9,cacheOrigin:0.0) ...几何:空 ...填充:EdgeInsets.all(20.0) ... textDirection:ltr ...孩子:RenderSliv​​erList#9d74e relayoutBoundary=up2 NEEDS-PAINT ...需要合成 ... parentData:paintOffset=Offset(0.0, 0.0) (可以使用大小) ...约束:SliverConstraints(AxisDirection.down,GrowthDirection.forward,ScrollDirection.idle,scrollOffset:0.0,remainingPaintExtent:454.9,crossAxisExtent:335.0,crossAxisDirection:AxisDirection.right,viewportMainAxisExtent:474.9,remainingCacheExtent:704.9,cacheOrigin:0.0) ...几何:空 ... 目前在世的孩子:0 到 3 ...索引为 0 的子项:RenderIndexedSemantics#3b488 relayoutBoundary=up3 NEEDS-PAINT ...需要合成 ...父数据:索引= 0; layoutOffset=0.0(可以使用大小) ... 约束:BoxConstraints(w=335.0, 0.0

return Container(
          color: appColors.primaryColor,
          child: ListView(
            primary: false,
                  children: [
                    // TITOLO
                    Align(
                      alignment: Alignment.center,
                        child: Container(
                        child: Text(
                                localization.showQR,
                                style: Theme.of(context).primaryTextTheme.headline5.copyWith(
                                  color: appColors.green,
                                  fontWeight: FontWeight.bold,
                                ),
                              ),
                            ),
                        ),
                    Align(
                      alignment: Alignment.center,
                        child: Container(
                                child: qrCodeHolder
                            ),
                        ),
                    Align(
                      alignment: Alignment.center,
                        child: Container(
                              child: AutoSizeText(
                                localization.home_subLabel,
                                textAlign: TextAlign.center,
                                maxLines: 1,
                                style: Theme.of(context).primaryTextTheme.headline5.copyWith(
                                  color: appColors.green,
                                  fontWeight: FontWeight.bold,
                                ),
                              ),
                            ),
                        ),
                    Positioned(
                      //top: size.height * .02,
                      //right: size.width * .02,
                      child: Row(
                        children: [
                            TextField(
                              inputFormatters: [
                                new LengthLimitingTextInputFormatter(7),
                              ],
                              decoration: InputDecoration(
                                filled: true,
                                fillColor: Colors.white,
                                focusedBorder: OutlineInputBorder(
                                  borderSide: BorderSide(color: Colors.white),
                                ),
                                enabledBorder: UnderlineInputBorder(
                                  borderSide: BorderSide(color: Colors.white),
                                ),
                              ),
                              textAlign: TextAlign.center,
                              style: TextStyle(
                                fontSize: 18.0,
                                color: Colors.black,
                              ),
                            ),
                          IconButton(
                            icon: Image.asset("assets/images/send.png"),
                            onPressed: () => showDialog(context: context, builder: (_) => PaymentDialog()),
                          ),
                          Text("dfjbsdifbsdf"),
                        ]
                      ),
                    ),
                  ],
              padding: EdgeInsets.all(20.0),
            ),
          );

【问题讨论】:

    标签: flutter listview compiler-errors


    【解决方案1】:

    您需要将 TextField 包装在 Expanded 小部件或宽度有限的容器中。 这是因为 Row 假设它可以采用最大宽度,而 TextField 和 TextFormField 小部件默认尝试采用最大宽度。

    通过将它们放在一起,你会得到你所遇到的错误。

    将此用于TextField,在一行内,它必须包含在ExpandedFlexible 中。

    Row(
     children: [
      Expanded(
       child: TextField () 
      )
    ])
    

    【讨论】:

    • 还有文本字段或扩展中的所有行?
    • Row( children: [ Expanded( child: TextField () )]) 只针对TextField,在一行内,必须用ExpandedFlexible 包裹。
    • 完美它的工作.. 扩展器中的文本。现在如何将行从列表视图中分离一点?
    • 完美它的工作.. 扩展器中的文本。现在如何将行从列表视图中分离一点?
    • 请将其标记为您问题的解决方案,如果有帮助,请点赞。对于您的第二个问题,请打开另一个帖子,以使事情井井有条,以便未来的用户可以从您的问题中受益。在评论区很难找到答案。
    猜你喜欢
    • 1970-01-01
    • 2020-12-23
    • 2023-03-31
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2021-02-04
    • 2023-02-20
    • 2019-02-14
    相关资源
    最近更新 更多