首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StatelessWidget和ScrollController

StatelessWidget和ScrollController
EN

Stack Overflow用户
提问于 2020-11-21 09:20:10
回答 1查看 664关注 0票数 0

我有一个带有StatelessWidgetScrollController,在这个组件的子组件中,有一个StatefulWidget在它的initState中添加了scrollController.addListener

代码语言:javascript
复制
class MyStatelessWidget extends StatelessWidget {
  final ScrollController scrollController = ScrollController();

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Placeholder(), //Complex child
        Placeholder(), //Complex child
        Placeholder(), //
        MyStatefulWidget(
          scrollController: scrollController,
        ) // Complex child
      ],
    );
  }
}

class MyStatefulWidget extends StatefulWidget {
  final ScrollController scrollController;

  const MyStatefulWidget({
    @required this.scrollController,
  });

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

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }

  @override
  void initState() {
    print('Scroll listener added');
    widget.scrollController.addListener(() {
      print('Scroll position changed');
    });
    super.initState();
  }
}

我的问题是,当build的父级MyStatelessWidget执行,有时我失去滚动侦听器为什么?我怎么才能修好它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-21 11:07:13

_myStatefulWidget正在给build打电话,但没有给initState打电话。因此,您没有在新控制器上注册侦听器。

解决方案是使用状态管理解决方案,以便在小部件之间共享控制器。查看提供程序包。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64941531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档