web-dev-qa-db-ja.com

ListViewを使用すると、ParentDataWidgetエラーが誤って使用される

私のアプリケーションのこの部分にはListViewがあります。アプリを実行すると、このエラーが発生し、解決できません。

Scaffold(
  body: Directionality(
textDirection: TextDirection.rtl,
child: Container(
  child: StreamBuilder(
    stream: globals.database.ticketsDao.getTicketsStream(),
    builder: (BuildContext context, AsyncSnapshot<List<Tickets>> snapshot) {
      if (snapshot.hasData) {
        return Column(
          children: <Widget>[
            Expanded(
              child: ListView.separated(
                  itemBuilder: (context, index) {
                    return ListTile(
                      title: Flexible(
                        child: Text(
                          snapshot.data[index].subject,
                          style: Theme.of(context).textTheme.caption.copyWith(fontFamily: 'IranSansBold'),
                        ),
                      ),
                      subtitle: Text(
                        snapshot.data[index].description,
                        style: Theme.of(context).textTheme.caption.copyWith(fontFamily: 'IranSansLight'),
                      ),
                    );
                  },
                  separatorBuilder: (context, index) {
                    return Divider();
                  },
                  itemCount:  snapshot.data.length),
            ),
          ],
        );
      } else {
        return Container(
            child: Center(
          child: Text(
            Strings.notAnyTickets,),
          ),
        ));
      }
    },
  ),
),
));

エラー:

Wウィジェットライブラリによって引き起こされる例外╞═════════════════════════════════════════ Default DefaultTextStyle(debugLabel:((englishLike subhead 2014).merge(blackMountainView

subhead))。copyWith、inherit:false、color:Color(0xdd000000)、family:Roboto、サイズ:16.0、weight:400、baseline:alphabetic、decoration:TextDecoration.none、softWrap:ボックス幅で折り返す、オーバーフロー:clip) :ParentDataWidgetの誤った使用。

フレキシブルウィジェットは、Flexウィジェット内に直接配置する必要があります。フレキシブル(深さなし、フレックス:1、ダーティ)にはフレックス祖先がありますが、それらの間に他のウィジェットがあります:-_ListTile

  • パディング(パディング:EdgeInsets(16.0、0.0、16.0、0.0))
  • Semantics(コンテナ:false、プロパティ:SemanticsProperties、選択済み:false、ラベル:null、値:null、ヒント:null、hintOverrides:null)

  • リスナー(リスナー:[ダウン]、動作:不透明)

  • _GestureSemantics
  • リスナー(リスナー:、動作:半透明)
  • 再ペイント境界
  • IndexedSemantics(インデックス:0)
  • KeepAlive(keepAlive:false)
  • SliverList(delegate:SliverChildBuilderDelegate#6802e(推定子数:19))

  • SliverPadding(パディング:EdgeInsets(0.0、0.0、0.0、50.0))

  • Viewport(axisDirection:down、anchor:0.0、offset:ScrollPositionWithSingleContext#c95ba(offset:0.0、range:null..null、viewport:335.0、ScrollableState、AlwaysScrollableScrollPhysics-> ClampingScrollPhysics、IdleScrollActivity#05a39、ScrollDirection.idle))
  • IgnorePointer- [GlobalKey#a3d1a](ignoring:false、ignoringSemantics:false)

  • Semantics(コンテナ:false、プロパティ:SemanticsProperties、ラベル:null、値:null、ヒント:null、hintOverrides:null)

  • リスナー(リスナー:[ダウン]、動作:不透明)
  • _GestureSemantics

  • リスナー(リスナー:[シグナル]、動作:deferToChild)

  • _ScrollSemantics- [GlobalKey#7cd1b]
  • 再ペイント境界
  • CustomPaint
  • 再ペイント境界
  • Expanded(flex:1)これらのウィジェットは、フレキシブルとそのフレックスの間に置くことはできません。問題のフレキシブルの親の所有権チェーンは次のとおりでした:DefaultTextStyle←AnimatedDefaultTextStyle←_ListTile←MediaQuery←Padding←SafeArea←Semantics←Listener←_GestureSemantics←RawGestureDetector←⋯
6
DolDurma

フレキシブルウィジェットは、拡張ウィジェットまたはフレックスウィジェットの直接の子である必要があります。

あなたの場合、ListTileウィジェットの一部としてFlexibleを使用していますが、これは適切な親ではありません。

フレキシブルウィジェットは、Flexウィジェット内に直接配置する必要があります。

FlexibleにはFlexの祖先がありますが、それらの間に他のウィジェットがあります:-_ListTile

1
omar hatem