0

目標:この列を (垂直方向に) スクロール可能にする必要があります。

予想:この列はスクロール可能です。

実際:コンソールにエラーが表示され、アプリに空白の白い画面が表示されます。

言及するために、スタック オーバーフローに関する他の BoxConstraints の質問を読みました。

残念ながらうまくいきませんでした。

最終的に、さまざまな身長の子供たちのコラムができました。子を合わせた高さがビューポートの高さを超えています。

私は SingleChildScrollview を使用し、次の指示に従いました。

https://api.flutter.dev/flutter/widgets/SingleChildScrollView-class.html

LayoutBuilder、ConstrainedBox、BoxConstraints、および IntrinsicHeight がすべて使用されましたが、まだそのエラーが発生します。

私の電話は現在、空白の白い画面です(右上隅に「デバッグ」があります)。

だからここに私の理解があります:

SingleChildScrollView は、無限の高さを許可することで、コンテンツをスクロール可能にします。

Column は、当然、その親の高さ全体を占めます。

2 つの結合は、永久に、またはアプリがクラッシュするまで伸びる列を意味します。

ビューポートのサイズを取得するために LayoutBuilder が使用されます。

ConstrainedBox は、列の最小の高さを設定するために使用されます。これは、列が特定の高さよりも小さくなることはできませんが、無限に大きくなる可能性があることを示しています。

「魔法」は IntrinsicHeight で発生し、列をその内容とまったく同じ大きさに強制します。これは、列が無限になるのを防ぐものです。

すべてにもかかわらず、私はまだエラーが発生しています。

誰かが助けてくれることを願っています。以下は私のコードです:

              padding: EdgeInsets.all(15),
              color: Colors.white,
              child: LayoutBuilder(
                builder:
                    (BuildContext context, BoxConstraints viewportConstraints) {
                  return SingleChildScrollView(
                    child: ConstrainedBox(
                      constraints: BoxConstraints(
                        minHeight: viewportConstraints.maxHeight,
                      ),
                      child: IntrinsicHeight(
                        child: Column(
                          children: <Widget>[
                            Column(
                              children: [
                                Text(),
                                RaisedButton(),
                                Text(),
                               ],
                            ),

                            Column(
                              children: [
                                Text(),
                                RaisedButton(),
                                Text(),
                               ],
                            ),

                            Column(
                              children: [
                                Text(),
                                RaisedButton(),
                                Text(),
                               ],
                            ),

スローされたエラーは次のとおりです。

══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during performLayout():
BoxConstraints forces an infinite height.
These invalid constraints were provided to RenderIntrinsicHeight's layout() function by the
following function, which probably computed the invalid constraints in question:
  RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:270:13)
The offending constraints were:
  BoxConstraints(0.0<=w<=330.0, h=Infinity)
The relevant error-causing widget was:
  ConstrainedBox

次の興味深い行があります。

The following RenderObject was being processed when the exception was fired: RenderConstrainedBox#d1ae8 relayoutBoundary=up15 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE:
  creator: ConstrainedBox ← _SingleChildViewport ← IgnorePointer-[GlobalKey#f983f] ← Semantics ←
    _PointerListener ← Listener ← _GestureSemantics ←
    RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#d70da] ← _PointerListener ← Listener
    ← _ScrollableScope ← _ScrollSemantics-[GlobalKey#d055d] ← ⋯
  parentData: <none> (can use size)
  constraints: BoxConstraints(0.0<=w<=330.0, 0.0<=h<=Infinity)
  **size: MISSING**
  additionalConstraints: BoxConstraints(0.0<=w<=Infinity, h=Infinity)

助けてくれたみんなに前もって感謝します!

4

1 に答える 1