我正在使用SingleChildScrollView和Column来显示滑动器和gridview。
如果我在列中使用其他小部件,例如文本,图像,则该应用程序显示为“正常”。但是我的滑动器和gridview无法显示,并报告错误:
I/flutter ( 4687): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════ I/flutter ( 4687): The following assertion was thrown during performLayout(): I/flutter ( 4687): RenderFlex children have non-zero flex but incoming height constraints are unbounded. I/flutter ( 4687): When a column is in a parent that does not provide a finite height constraint, for example if it is I/flutter ( 4687): in a vertical scrollable, it will try to shrink-wrap its children along the vertical axis. Setting a I/flutter ( 4687): flex on a child (e.g. using Expanded) indicates that the child is to expand to fill the remaining I/flutter ( 4687): space in the vertical direction. I/flutter ( 4687): These two directives are mutually exclusive. If a parent is to shrink-wrap its child, the child I/flutter ( 4687): cannot simultaneously expand to fit its parent. I/flutter ( 4687): Consider setting mainAxisSize to MainAxisSize.min and using FlexFit.loose fits for the flexible I/flutter ( 4687): children (using Flexible rather than Expanded). This will allow the flexible children to size I/flutter ( 4687): themselves to less than the infinite remaining space they would otherwise be forced to take, and I/flutter ( 4687): then will cause the RenderFlex to shrink-wrap the children rather than expanding to fit the maximum I/flutter ( 4687): constraints provided by the parent. I/flutter ( 4687): The affected RenderFlex is: I/flutter ( 4687): RenderFlex#1f4de relayoutBoundary=up14 NEEDS-LAYOUT NEEDS-PAINT I/flutter ( 4687): The creator information is set to: I/flutter ( 4687): Column ← _SingleChildViewport ← IgnorePointer-[GlobalKey#ae070] ← Semantics ← Listener ← I/flutter ( 4687): _GestureSemantics ← RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#e4f77] ← I/flutter ( 4687): _ScrollableScope ← _ScrollSemantics-[GlobalKey#4bb86] ← RepaintBoundary ← CustomPaint ← I/flutter ( 4687): RepaintBoundary ← ⋯
我曾经是uwp开发人员,而且还很陌生。有人可以帮忙吗?这是代码:
class _HomePageState extends State<HomePage> { final List<ListItem> _children; @override Widget build(BuildContext context) { return Scaffold( body:SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.spaceAround, children: <Widget>[ Expanded( child: Container( height: 200, child: Swiper( itemBuilder: (BuildContext context, int index) { return Image.network( "http://via.placeholder.com/350x150", fit: BoxFit.fitHeight, ); }, itemCount: 5, pagination: SwiperPagination(), control: SwiperControl(), ), )), Expanded( child: GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 4, childAspectRatio: 1.0), itemBuilder: (BuildContext context, int index) { return ListItemWidget(_children[index]); }, itemCount: _children.length, ), ), ], ), ), ); } }
您不能Expanded在SingleChildScrollView其中具有无限垂直尺寸的窗口小部件。
Expanded
SingleChildScrollView
class _HomePageState extends State<HomePage> { final List<ListItem> _children; @override Widget build(BuildContext context) { return Scaffold( body: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.spaceAround, children: <Widget>[ Expanded( child: Container( height: 200, child: Swiper( itemBuilder: (BuildContext context, int index) { return Image.network( "http://via.placeholder.com/350x150", fit: BoxFit.fitHeight, ); }, itemCount: 5, pagination: SwiperPagination(), control: SwiperControl(), ), )), Expanded( child: GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 4, childAspectRatio: 1.0), itemBuilder: (BuildContext context, int index) { return ListItemWidget(_children[index]); }, itemCount: _children.length, ), ), ], ), ); } }