在没有回调侦听器的情况下更改 scrollView 偏移

问题描述

我想用代码更改 scrollView 的偏移量,所以我使用 ScrollController:

ScrollController _controller;

_controller.addListener(() {
  print('call listener');
});

我改变偏移量的方法

_controller.jumpTo(200);

它会回调监听器一次。

_controller.animateto(200,duration: Duration(milliseconds: 1),curve: Curves.linear);

它也会回调监听器。

我想知道有没有办法在没有回调侦听器的情况下更改 scrollView 偏移量。

这是我所有的代码,你可以复制和测试:

import 'package:Flutter/material.dart';

class SingleChildScrollViewDemoPage extends StatefulWidget {
  SingleChildScrollViewDemoPage({Key key}) : super(key: key);

  @override
  _SingleChildScrollViewDemoPageState createState() =>
      _SingleChildScrollViewDemoPageState();
}

class _SingleChildScrollViewDemoPageState
    extends State<SingleChildScrollViewDemoPage> {
  ScrollController _controller;

  @override
  void initState() {
    super.initState();
    _controller = ScrollController();
    _controller.addListener(() {
      print('call listener');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('SingleChildScrollView')),body: SingleChildScrollView(
        controller: _controller,child: Column(
          children: [
            RaisedButton(
              child: Text('change offset'),onpressed: () {
                //_controller.jumpTo(200);
                _controller.animateto(200,curve: Curves.linear);
              },),Container(
              width: 375,height: 200,color: Colors.red,SizedBox(height: 30),height: 3000,color: Colors.green,],);
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...