【发布时间】:2020-02-23 22:19:18
【问题描述】:
我正在尝试从另一个有状态小部件更改驻留在一个有状态小部件中的 ScrollController 的偏移值。
我没有使用导航器来更改屏幕,而是简单地调用有状态小部件。
在这种情况下,InspectionForm 有状态小部件在 HomeScreen 有状态小部件内被调用。
主屏幕有状态小部件:
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
class _HomeScreenState extends State<HomeScreen> {
final ScrollController _homeController = ScrollController();
Widget _buildForm() {
if (_homeController.hasClients) {
setState(() {
_homeController.animateTo(
0.0,
curve: Curves.easeOut,
duration: const Duration(milliseconds: 300),
);
});
}
return InspectionForm();
}
@override
Widget build(BuildContext context) {
return Scaffold(body: CustomScrollView(
controller: _homeController,
primary: false,
slivers: <Widget>[
SliverList(
delegate: SliverChildListDelegate(
[
Column(
children: <Widget>[
Container(
child: _buildForm(),
),
],
),
],
),
),
],
),
);
}
表单有状态小部件:
class InspectionForm extends StatefulWidget {
@override
_InspectionFormState createState() => _InspectionFormState();
}
class _InspectionFormState extends State<InspectionForm> {
@override
Widget build(BuildContext context) {
return RaisedButton(
onPressed: (){
//Need to change the ScrollView offset when this button is pressed over here.
}
);
}
}
我已经简化了上面的代码,使其更易于阅读,并简单地理解我正在尝试做的事情。任何帮助将不胜感激。
【问题讨论】:
标签: flutter