我有一个ExpansionPanelList
里面的SingleChildScrollView
. 每当我(展开)折叠面板并因此调用 时setState
,它就会SingleChildScrollView
滚动回顶部。我怎样才能防止这种情况?
@override
Widget build(BuildContext context) {
final _scaffoldKey = new GlobalKey<ScaffoldState>();
return new Scaffold(
key: _scaffoldKey,
appBar: new AppBar(
title: new Text(widget.title),
),
body: new SingleChildScrollView(
child: new ExpansionPanelList(
children: <ExpansionPanel>[
// panels
],
expansionCallback: (int index, bool isExpanded) {
setState(() {
// toggle expanded
});
},
), // ExpansionPanelList
), // SingleChildScrollView
); // Scaffold
}
Run Code Online (Sandbox Code Playgroud)
这个答案建议使用自定义ScrollController
与keepScrollOffset
设置为true
,然而,这是默认值,并明确将其设置为true
因此不会改变任何东西。
die*_*per 12
那是因为您Key
每次重建小部件 (setState) 时都在使用新的。
要解决您的问题,只需将下面的代码移到build
方法之外
final _scaffoldKey = new GlobalKey<ScaffoldState>();
Run Code Online (Sandbox Code Playgroud)
像这样 :
final _scaffoldKey = new GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,
appBar: new AppBar(
title: new Text(widget.title),
),
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3447 次 |
最近记录: |