Dans cette partie de ma candidature, j'ai ListView
, lorsque j'exécute une application, je reçois cette erreur et je ne peux pas résoudre que:
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,),
),
));
}
},
),
),
));
erreur:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building DefaultTextStyle(debugLabel:
((englishLike subhead 2014).merge(blackMountainView
subhead)).copyWith, inherit: false, color: Color(0xdd000000), family:
Roboto, size: 16.0, weight: 400, baseline: alphabetic, decoration:
TextDecoration.none, softWrap: wrapping at box width, overflow:
clip): Incorrect use of ParentDataWidget.
Flexible widgets must be
placed directly inside Flex widgets. Flexible(no depth, flex: 1,
dirty) has a Flex ancestor, but there are other widgets between them:
- _ListTile
- Padding(padding: EdgeInsets(16.0, 0.0, 16.0, 0.0))
- Semantics(container: false, properties: SemanticsProperties, selected: false, label: null, value: null, hint: null, hintOverrides:
null)
- Listener(listeners: [down], behavior: opaque)
- _GestureSemantics
- Listener(listeners: <none behavior: translucent)
- RepaintBoundary
- IndexedSemantics(index: 0)
- KeepAlive(keepAlive: false)
- SliverList(delegate: SliverChildBuilderDelegate#6802e(estimated child count: 19))
- SliverPadding(padding: 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(container: false, properties: SemanticsProperties, label: null, value: null, hint: null, hintOverrides: null)
- Listener(listeners: [down], behavior: opaque)
- _GestureSemantics
- Listener(listeners: [signal], behavior: deferToChild)
- _ScrollSemantics-[GlobalKey#7cd1b]
- RepaintBoundary
- CustomPaint
- RepaintBoundary
- Expanded(flex: 1) These widgets cannot come between a Flexible and its Flex. The ownership chain for the parent of the offending
Flexible was: DefaultTextStyle ← AnimatedDefaultTextStyle ←
_ListTile ← MediaQuery ← Padding ← SafeArea ← Semantics ← Listener ← _GestureSemantics ← RawGestureDetector ← ⋯
Les widgets flexibles doivent être l'enfant direct d'un widget élargi ou flexible.
Dans votre cas, vous utilisez Flexible dans le cadre d'un widget Listtile, qui n'est pas un parent approprié.
Les widgets flexibles doivent être placés directement à l'intérieur des widgets flexibles.
Flexible a un ancêtre flexible, mais il y a d'autres widgets entre eux: - _Listtile
Donne cette erreur car un widget Flexible
doit être un descendant d'un Row
, Column
ou Flex
,
L'utilisation d'un widget Flexible
donne un enfant d'un Row
, Column
ou Flex
la flexibilité nécessaire pour remplir l'espace disponible dans l'axe principal (par exemple , horizontalement pour un Row
ou verticalement pour un Column
)
fixer le problème ci-dessus, il y a deux voies,
1: est de déplacer le widget Flexible
à l'intérieur d'un widget flex
. Exemple ci-dessous
ListView.separated(
itemBuilder: (context, index) {
return Container(
height: 50,
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Flexible(child: Text('Title')),
Flexible(child: Text("Sub Title"))
],
),
);
},
separatorBuilder: (context, index) {
return Divider();
},
itemCount: snapshot.data.length)
2: Retirez le widget Flexible
ListTile(
title: Text(
snapshot.data[index].firstAndLastName,
style: Theme.of(context).textTheme.caption.copyWith(fontFamily: 'IranSansBold'),
),
subtitle: Text(
snapshot.data[index].firstAndLastName,
style: Theme.of(context).textTheme.caption.copyWith(fontFamily:
'IranSansLight'),
),
);