如何解决Flutter,如何解决“RenderBox 未布局:...NEEDS-PAINT”
我正在尝试使用 GridView.builder
显示一个列表并在每一行中显示一个子项...这是代码的一部分:
SafeArea(
child: Column(
children: [
Header(),SizedBox(height: 20),Expanded(child: SingleChildScrollView(child: Konten())),],),)
和 Konten()
的代码:
Padding(
padding: const EdgeInsets.all(10),child: GridView.builder(
physics: NeverScrollableScrollPhysics(),shrinkWrap: true,itemCount: data.length,gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 1,crossAxisspacing: 16,mainAxisspacing: 16,childAspectRatio:
10
),itemBuilder: (context,index) => Container(
alignment: Alignment.center,child: Text(data[index]["API"]),decoration: Boxdecoration(
color: Colors.Amber,borderRadius: BorderRadius.circular(15)),)
但我收到此错误:
════════ Exception caught by rendering library ═════════════════════════════════
Assertion Failed:
../…/rendering/Box.dart:1930
hasSize
"RenderBox was not laid out: RenderRepaintBoundary#0992d relayoutBoundary=up3 NEEDS-PAINT"
The relevant error-causing widget was
Column
lib/screen_utama.dart:18
════════════════════════════════════════════════════════════════════════════════
我使用的 data
列表是来自 api 的数据......但是当我将数据更改为这个时,不会显示错误:
List data=List.generate(10,(index) => {"id": index,"name": "Lowongan $index"})
.toList();
有没有办法解决这个问题?
解决方法
认为当您的数据为空时会发生这种情况。当没有可用数据时,您可以通过显示一个空的占位符来简单地修复它。
对于您的 Konten
小部件,build
函数可能如下所示:
@override
Widget build(BuildContext context) {
if (data.isEmpty){
return Text('no content available');
}
return Padding(
padding: const EdgeInsets.all(10),child: GridView.builder(
physics: NeverScrollableScrollPhysics(),shrinkWrap: true,itemCount: data.length,gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 1,crossAxisSpacing: 16,mainAxisSpacing: 16,childAspectRatio: 10,mainAxisExtent: 0),itemBuilder: (context,index) => Container(
alignment: Alignment.center,child: Text(data[index]["API"]),decoration: BoxDecoration(color: Colors.amber,borderRadius: BorderRadius.circular(15)),),);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。