Flutter 如何使用按钮滚动小部件?

Flutter 如何使用按钮滚动小部件?,flutter,singlechildscrollview,Flutter,Singlechildscrollview,我正在用flatter构建一个WebApp,我有一个SingleChildScrollView,里面有一些小部件。当我按下按钮时,我希望appbar上的按钮将我带到相应的小部件。 可能吗?这里我附上代码的一部分 Widget build(BuildContext context) { return Scaffold( extendBodyBehindAppBar: true, appBar: CustomAppBar(),

我正在用flatter构建一个WebApp,我有一个SingleChildScrollView,里面有一些小部件。当我按下按钮时,我希望appbar上的按钮将我带到相应的小部件。 可能吗?这里我附上代码的一部分

    Widget build(BuildContext context) {
        return Scaffold(
          extendBodyBehindAppBar: true,
          appBar: CustomAppBar(),
          backgroundColor: Colors.white,
          body: SingleChildScrollView(
            controller: widget.homeController,
            child: Column(
              children: [
                Inicio(),
                Services(),
                QuienesSomos(),
                ContactForm(),
                BottomInfo(),
              ],
            ),
          ),
        );
       }

因此,在SingleChildScrollView中,每个孩子在appbar上都有一个按钮,我希望当我按下对应按钮时,它会向下滚动到小部件上的对应部分。我尝试使用Navigator.of.PushNamed,但它会打开一个新屏幕,而不是向下滚动。有什么想法吗?提前谢谢

要控制位置,必须管理SingleChildScrollView的控制器

如果您想顺利进入某个部分,可以将控制SingleChildScrollView控制器的功能附加到按钮:

widget.homeController.animateTo(
  0.0, // change 0.0 {double offset} to corresponding widget position
  duration: Duration(seconds: 1),
  curve: Curves.easeOut,
);
如果您只想立即跳到该位置:

  widget.homeController.jumpTo(0.0); // change 0.0 {double value} to corresponding widget position

我可以通过使用

                onPressed: () {
                  Scrollable.ensureVisible(servicesKey.currentContext,
                      duration: Duration(seconds: 1),
                      curve: Curves.easeOut);
                },

通过在每个小部件中指定相应的键。

这可以在SingleChildScrollView上使用ScrollController。我没有关于hw的答案来做这件事。但是我建议研究一下这个控制器,我有个问题。我试图实现的是使用web颤振的某种登录页。它也有表单等等,所以它有一些WebApps功能,这就是为什么我要使用flatter。问题是,当我改变chrome的大小时,假设它是屏幕的一半,使用这种方法,它会向下滚动到小部件的不同部分。有没有办法滚动到SingleChildScrollView中的特定小部件?里面的每个小部件都是一个网页部分。谢谢