Flutter 连接滚动控制器后如何调用事件

Flutter 连接滚动控制器后如何调用事件,flutter,dart,flutter-dependencies,Flutter,Dart,Flutter Dependencies,连接scroll controller后需要调用\u scrollControllerInitiated方法 void\u scrollControllerInitiated(){ 未来(()=>_scrollController.jumpTo(1000)); } scrollController.addListener所做的是侦听任何滚动事件并调用已注册的回调函数。如果在附加到ListView或任何可滚动的小部件后,通过墙将滚动条跳转到某个偏移量,则应使用WidgetsBinding.inst

连接scroll controller后需要调用\u scrollControllerInitiated方法

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,
        ),
      ),
    );
  }
}