FlutterError(RenderRepaintBoundary 需要一个子类型 RenderBox 但收到了 RenderSliverToBoxAdapter 类型的子级。 RenderObjects 期望特定类型的子对象,因为它们 在布局和绘画过程中与孩子协调。例如,一个 RenderSliver 不能是 RenderBox 的子级,因为 RenderSliver 不理解 RenderBox 布局协议。
创建了需要 RenderBox 子级的 RenderRepaintBoundary 作者:RepaintBoundary ← IndexedSemantics ← _SelectionKeepAlive ← 通知监听器 ← 保持活动 ← 自动保持活动 ← KeyedSubtree ← SliverList ← 视口 ← IgnorePointer-[GlobalKey#4ddb3] ← 语义 ← 监听器 ← ⋯
RenderSliverToBoxAdapter 与预期子项不匹配 类型创建者:SliverToBoxAdapter ← News_List_View ← RepaintBoundary ← IndexedSemantics ← _SelectionKeepAlive ← 通知监听器 ← 保持活动 ← 自动保持活动 ← KeyedSubtree ← SliverList ← 视口 ← 忽略指针-[GlobalKey#4ddb3] ← ⋯)
这是我的代码,我已经使用过
SliverToBoxAdapter
但是这个异常仍然
@override
Widget build(BuildContext context) {
return isLoading
? const SliverToBoxAdapter(
child: Center(child:CircularProgressIndicator()))
: SliverList(
delegate: SliverChildBuilderDelegate(childCount: articles.length,
(context, index) {
return Padding(
padding: const EdgeInsets.only(bottom: 22),
child: NewsTile(
articleModel: articles[index],
),
);
}));
}
}
你必须这样使用
@override
Widget build(BuildContext context) {
return CustomScrollView(
slivers: [
SliverToBoxAdapter(
child: isLoading
? Center(child: CircularProgressIndicator())
: SizedBox.shrink(), // Return an empty widget if not loading
),
SliverList(
delegate: SliverChildBuilderDelegate(
childCount: articles.length,
(context, index) {
return Padding(
padding: const EdgeInsets.only(bottom: 22),
child: NewsTile(
articleModel: articles[index],
),
);
},
),
),
],
);
}