使用Slidable组件实现滑动列表项时遇Scrollable祖先缺失错误
解决Slidable组件的Scrollable.of()调用错误
错误原因
Slidable的滑动逻辑依赖Scrollable组件提供的上下文,当前代码将Slidable直接放在Center内,没有包裹在可滚动容器中,导致无法找到Scrollable上下文,触发报错:Scrollable.of() was called with a context that does not contain a Scrollable widget。
修改后的代码
import 'package:flutter/material.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; void main(List<String> args) { runApp( const MaterialApp( home: MyWidget(), ), ); } class MyWidget extends StatefulWidget { const MyWidget({super.key}); @override State<MyWidget> createState() => _MyWidgetState(); } class _MyWidgetState extends State<MyWidget> { @override Widget build(BuildContext context) { return Scaffold( body: ListView( children: [ Slidable( startActionPane: ActionPane( motion: const StretchMotion(), children: [ SlidableAction(onPressed: ((context) {}), icon: Icons.waves), ], ), child: Container( color: Colors.grey, child: const ListTile( leading: Icon(Icons.newspaper), title: Text("New List Tile"), ), ), ), ], ), ); } }
关键修改点
- 将Slidable包裹在
ListView(或SingleChildScrollView)中,为其提供Scrollable上下文,满足滑动交互的依赖要求。 - 若需实现多列表项滑动,直接在ListView的
children中添加更多Slidable组件即可,匹配你期望的效果。
错误截图:
期望效果:
内容的提问来源于stack exchange,提问作者A. Rokbi
相关产品推荐
相关产品推荐

