Flutter 连接滚动控制器后如何调用事件
连接scroll controller后需要调用\u scrollControllerInitiated方法Flutter 连接滚动控制器后如何调用事件,flutter,dart,flutter-dependencies,Flutter,Dart,Flutter Dependencies,连接scroll controller后需要调用\u scrollControllerInitiated方法 void\u scrollControllerInitiated(){ 未来(()=>_scrollController.jumpTo(1000)); } scrollController.addListener所做的是侦听任何滚动事件并调用已注册的回调函数。如果在附加到ListView或任何可滚动的小部件后,通过墙将滚动条跳转到某个偏移量,则应使用WidgetsBinding.inst
void\u scrollControllerInitiated(){
未来(()=>_scrollController.jumpTo(1000));
}
scrollController.addListener所做的是侦听任何滚动事件并调用已注册的回调函数。如果在附加到ListView或任何可滚动的小部件后,通过墙将滚动条跳转到某个偏移量,则应使用WidgetsBinding.instance.addPostFrameCallback
在小部件生成后注册回调函数。检查下面的代码
@override
void initState()
{
super.initState();
_scrollController = ScrollController(initialScrollOffset: 0);
_scrollController.addListener((_scrollControllerInitiated));
}
void _scrollControllerInitiated()
{
_scrollController.jumpto(1000);
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了StatefulWidget{
_MyApp createState()=>\u MyApp();
}
类MyApp扩展了状态{
ScrollController\u ScrollController;
void _scrollControllerInitiated(){
_scrollController.animateTo(200,
持续时间:持续时间(毫秒:500),曲线:Curves.ease);
}
Widget\u itemBuilder(构建上下文,int索引){
返回手势检测器(
onTap:()=>设置状态(){
打印(“hello$index”);
}),
子:容器(
填充:常量边集。对称(水平:15,垂直:15),
子项:文本(“框$index”),
),
);
}
void initState(){
super.initState();
_scrollController=scrollController();
WidgetsBinding.instance.addPostFrameCallback((){
_scrollControllerInitiated();
});
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:文本(“滚动测试”),
),
正文:ListView.builder(
itemBuilder:\u itemBuilder,
物品计数:200,
控制器:\ u滚动控制器,
),
),
);
}
}
scrollControllerInitiated内有什么?scrollControllerInitiated后需要跳转特定偏移量,当前方法有什么问题?scrolllistener在我滚动页面后调用的仅图像(\u scrollControllerInitiated)方法后触发,我需要在连接scrollcontroller后立即调用该方法。然后将图像代码添加到它在连接scroll controller后调用的,仅滚动图像。我需要在连接scroll controller后立即调用该方法。@AllwinVinosh这将在布局完成后调用(这意味着您的控制器已连接到ListBody)。我没有使用Future.delayed
,它是常规的Future
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
_MyApp createState() => _MyApp();
}
class _MyApp extends State<MyApp> {
ScrollController _scrollController;
void _scrollControllerInitiated() {
_scrollController.animateTo(200,
duration: Duration(milliseconds: 500), curve: Curves.ease);
}
Widget _itemBuilder(BuildContext context, int index) {
return GestureDetector(
onTap: () => setState(() {
print("hello $index");
}),
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 15),
child: Text("Box $index"),
),
);
}
void initState() {
super.initState();
_scrollController = ScrollController();
WidgetsBinding.instance.addPostFrameCallback((_) {
_scrollControllerInitiated();
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Scroll Test"),
),
body: ListView.builder(
itemBuilder: _itemBuilder,
itemCount: 200,
controller: _scrollController,
),
),
);
}
}