【问题标题】:How can I run a function whenever a page is loaded in flutter?每当页面以颤振加载时,如何运行函数?
【发布时间】:2020-08-16 16:34:15
【问题描述】:

我认为标题总结得很好,当页面以颤振加载时,我如何运行一些代码? 或者如何使用:“MediaQuery.of(context).size.height/3”将列表视图的滚动偏移量设置为页面的某个百分比,这不起作用的原因是因为我不能使用(上下文)在列表视图中,因为还没有上下文。 但是,如果无法执行 listview 的操作,那么我也可以处理一些在页面加载时运行的代码 :)

【问题讨论】:

    标签: function flutter listview dart


    【解决方案1】:

    WidgetsBinding 提供了一种添加一次性后帧回调的方法。

    WidgetsBinding.instance.addPostFrameCallback((_) {
      // executes after build
    })
    

    由于此回调只会被调用一次,因此您需要在每次构建时添加它:

    @override
    Widget build(BuildContext context) {
      WidgetsBinding.instance.addPostFrameCallback((_) => afterBuild);
      return Container(); // widget tree
    }
    
    void afterBuild() {
      // executes after build is done
    }
    

    【讨论】:

    • 这可行,但我必须打开页面两次才能发生任何事情,即使我将 afterBuild() 放在 main.dart 中。我知道为什么,你呢?
    【解决方案2】:

    难道不能使用 DidChangeDependencies() 函数来解决您的问题吗?因为它是在 initState() 完成后立即调用的:)

         @override
      void didChangeDependencies() {
        super.didChangeDependencies();
    //Code here
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2020-09-05
      • 2021-09-11
      • 1970-01-01
      • 2016-07-31
      • 2023-03-05
      • 2017-08-05
      • 2019-03-25
      • 1970-01-01
      相关资源
      最近更新 更多