Dart 如何同步滚动两个SingleChildScrollView小部件

Dart 如何同步滚动两个SingleChildScrollView小部件,dart,flutter,Dart,Flutter,如何同步滚动两个SingleChildScrollView小部件 new Positioned( child: new SingleChildScrollView( scrollDirection: Axis.horizontal, child: new Scale() ), ), new Positioned( child: new SingleChild

如何同步滚动两个SingleChildScrollView小部件

    new Positioned(
        child: new SingleChildScrollView(
            scrollDirection: Axis.horizontal,
            child: new Scale() 
            ), 
        ),
    new Positioned(
        child: new SingleChildScrollView(
            scrollDirection: Axis.horizontal,
            child: new chart()
        )
    )

我需要这两个小部件有完全相同的滚动位置(都有相同的宽度,只能水平滚动)。它必须在用户操作之后以及在代码中更改时进行同步。

对于输入,您可以通过作为构造函数参数传入来控制它们

对于输出,您可以使用来监听其中一个的移动,然后使用ScrollController将它们同步在一起

你可以听一些东西,比如把它们紧紧地绑在一起,或者等待,然后调用ScrollController

如前所述,您必须在一个scrollview上使用scrollcontroller,在另一个scrollview上使用通知侦听器,下面是代码

class StackO extends StatefulWidget {
  // const stack({Key key}) : super(key: key);

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

class _StackOState extends State<StackO> {
  ScrollController _scrollController = new ScrollController();

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: <Widget>[
          new Positioned(
            child: new SingleChildScrollView(
              controller: _scrollController,
              scrollDirection: Axis.horizontal,
              child: new Scale() // your widgets,
            ),
          ),
          new Positioned(
            child: new NotificationListener<ScrollNotification>(
              onNotification: (ScrollNotification scrollInfo) {
                print('scrolling.... ${scrollInfo.metrics.pixels}');
                _scrollController.jumpTo(scrollInfo.metrics.pixels);
                return false;
              },
              child: SingleChildScrollView(
                scrollDirection: Axis.horizontal,
                child: new chart() // your widgets,
              ),
            ),
          ),
        ],
      ),
    );
  }
}
class StackO扩展StatefulWidget{
//常量堆栈({Key}):超级(Key:Key);
@凌驾
_StackState createState()=>\u StackState();
}
类_StackOState扩展状态{
ScrollController_ScrollController=新的ScrollController();
@凌驾
小部件构建(构建上下文){
返回容器(
子:列(
儿童:[
新定位(
子:新的SingleChildScrollView(
控制器:\ u滚动控制器,
滚动方向:轴水平,
child:new Scale()//您的小部件,
),
),
新定位(
孩子:新的NotificationListener(
onNotification:(滚动通知滚动信息){
打印('scrolling….${scrollInfo.metrics.pixels}');
_scrollController.jumpTo(scrollInfo.metrics.pixels);
返回false;
},
子:SingleChildScrollView(
滚动方向:轴水平,
child:new chart()//您的小部件,
),
),
),
],
),
);
}
}

为什么不在同一个scrollview中同时使用这两个视图?因为当SingleChildScrollView的大小不同时,行为将是未定义的