首页 > 其他分享 >WidgetsBinding.instance.addPostFrameCallback widget首次渲染完成执行其他操作

WidgetsBinding.instance.addPostFrameCallback widget首次渲染完成执行其他操作

时间:2024-01-18 11:46:11浏览次数:24  
标签:widget 渲染 addPostFrameCallback WidgetsBinding instance initState 组件

使用场景

Flutter 中的界面组件(控件)只要一帧就能绘制渲染在屏幕上,当然,这一帧 Flutter 做了很多事,包括 Build、Layout 和 Painting 阶段。而 addPostFrameCallback 就是在每一帧绘制完成后再回调执行一些自己的方法。这个机制的使用场景非常多。

比如组件渲染完后做一些操作,像开启动画、弹出对话框 Dialog、获取组件 Widget 的大小和位置。或者使用 addPostFrameCallback 延迟加载数据,确保界面渲染完才加载数据,避免出现 UI 阻塞。还有,在界面组件渲染完成后,请求接口获取数据,动态添加组件等等。总之,当你需要在组件首次渲染完成后执行某些操作时,都可以使用它

如何使用

最常见就是在生命周期 init() 初始化中使用,因为 init() 只会在组件首次渲染执行,是很特殊的函数,而在 initState 中使用 WidgetsBinding.instance.addPostFrameCallback ,也就说明我们在组件首次渲染完成后执行回调函数。

 

 @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      print("initState: Frame has been rendered");
    });
  }

 

 

https://guozh.net/add-post-frame-callback/

标签:widget,渲染,addPostFrameCallback,WidgetsBinding,instance,initState,组件
From: https://www.cnblogs.com/huangzs/p/17972179

相关文章

  • flutter中InheritedWidget共享数据
    InheritedWidget是Flutter框架中用于在Widget树中共享数据的机制。它是一个特殊的Widget,可以将其放置在Widget树的上层,并向下传递共享的数据给其子Widget。子Widget可以通过InheritedWidget来获取共享的数据,而不需要通过显式地将数据传递给它们。import'package:flutter/materi......
  • widget 分析1
    @overrideWidgetbuild(BuildContextcontext){listenKeepAlive();returnWillPopScope(onWillPop:_onWillPop,child:AiCommonScaffold(body:Listener(onPointerDown:(event){finalshow=ref.read(resul......
  • 20、布局(QStackedWidget)
    QStackedWidget是Qt框架中的一个容器类,它可以用来管理多个窗口或页面,只显示其中一个窗口或页面。在QStackedWidget中,只有当前激活的窗口或页面可见,其他窗口或页面被隐藏。使用QStackedWidget可以方便地实现页面切换效果,比如制作一个具有多个页面的向导,或者实现一个选项卡......
  • QTreeWidget使用小案例
    一、概述使用QTreeWidget制作一个树形菜单。示例图: 二、代码示例#include"TreeWidgetExampleWindow.h"TreeWidgetExampleWindow::TreeWidgetExampleWindow(QWidget*parent):QWidget(parent){this->setWindowTitle("TreeWidget组件");QVBoxLayout*......
  • QTabWidget小案例
    一、概述编写一个QTabWidget小案例,示例图:  二、代码示例#include"TabWidgetExampleWindow.h"TabWidgetExampleWindow::TabWidgetExampleWindow(QWidget*parent):QWidget(parent){this->setWindowTitle("TabLayout布局");QVBoxLayout*vLayo......
  • C++ Qt开发:TableWidget表格组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TableWidget表格组件的常用方法及灵活运用。QTableWidget是Qt中用于显示表格数据的部件。它是......
  • 将QWebEngineView添加到QStackedWidget或QTabWidget中导致切换按钮失效的解决方案
    问题描述:将QWebEngineView添加到QStackedWidget或QTabWidget中导致切换按钮失效,如果只有两个来回切的话,是没有问题的,当出现多个页面的时候,就会切换失灵。解决思路:将QWebEngineView浮到上面,只要实现大小、位置、显示隐藏与主页面同步即可。 QWebEngineView窗口构造窗口添加:se......
  • Qt中QWidgetAction使用例子
    在Qt中可以用QWidgetAction来模仿现代应用程序中的自定义控件的菜单项。比如下方Edge浏览器的菜单,在“缩放”一项中有用来调整网页缩放的几个按钮和显示网页缩放比例的控件。这样的菜单项Qt也可以做。下面将给出一个简单的例子供参考,此例子在VS2017和Qt5.9下测试通过。其运行效......
  • Qt 之 QWidget QLabel
    @TOC前言一、Qt工程介绍QtCreator以工程项目的方式对源码进行管理一个QtCreator工程包含不同类型的文件。.pro项目描述文件.pro.user用户配置描述文件-.h头文件.cpp源文件.ui界面描述文件资源文件(图片,音频,等)pro项目描述文件的基本组成#一注释起始符:以“#”开始,到这一行......
  • Qt结合QThread创建一个QWidget基类,用于方便的在QWidget中执行耗时任务
    一、概述背景:Qt+OpenCV项目改造,之前项目中的OpenCV算法都是在主线程中执行,导致部分操作或者重复点击的时候界面卡顿。现在想对这块进行改造。集合QThread和QWidget设计一个QWidget基类用于方便的执行耗时任务并显示执行结果。子类只需要继承这个QWidget基类,只需......