当前位置: 首页 > 网络应用技术

Flutter系列:Flutter中的索引扇动

时间:2023-03-05 22:34:21 网络应用技术

  以前,我们介绍了称为堆栈的扑面堆栈结构的布局组件。通过堆栈,我们可以将一些小部件堆叠在其他小部件上,以便可以实现图像的组合函数。它也是日常生活中最常用的组成部分。我们今天要介绍的组件是Stack的近亲,称为indexedstack。它具有什么功能?让我们一起看一下。

  可以从索引刺激的名称中可以看出索引函数为堆栈添加了索引功能。是这样吗?让我们看一下IndexedStack的定义:

  可以看出,IndexedStack从堆栈继承。它实际上是堆栈的一个子类,因此以前引入的某些功能在StackStack的功能中可用,并且IndexedStack增强了堆栈的功能。

  让我们看一下其构造函数:

  可以看出,与堆栈相比,IndexedStack具有附加的索引参数,但是此参数未传递到Super的构造函数中,索引的使用在哪里?

  不用担心,indexedstack还重写了下面的两种方法,即createrenderObject和updateenderObject:

  与堆栈相比,IndexedStack在这两种方法中使用RenderIndexedStack,堆栈使用RenderSstack。

  因此,尽管IndexedStack从堆栈继承,但两者之间的性能之间存在根本区别。

  对于堆栈,一个小部件放在另一个小部件上,但是可以同时显示多个小部件。对于indexedstack,它仅显示与索引相对应的小部件。

  RenderIndexedStack也从RenderSstack继承了:

  让我们看一下它的油漆框方法:

  可以看出,在PaintStack方法中,仅绘制与索引相对应的_CHILDATINDEX,因此,如果索引不匹配,则将不显示。

  IndexedStack的性能有点像我们的常见标签。

  从上面的索引stack的构造函数中,我们知道索引stack需要进入索引属性和相应的孩子。

  在此示例中,我们将向索引stack和4个孩子引入一个可变索引属性:

  _counter是在statefulwidget.index中定义的变量,可以通过调用setState方法来修改索引以实现动态切换子的目的。

  这里的孩子小部件非常简单。我们使用不同大小的不同尺寸的不同颜色来促进切换的效果:

  最后,在脚手架中的floatingActionButton方法中调用_changeIndex方法,以实现索引更改。最终代码如下:

  程序运行后的效果如下:

  通过单击右下方的按钮,我们得到了不同的小部件。

  indexwidget与选项卡有点相似,每个人都可以在需要时使用它。

  本文的示例:https://github.com/ddean2009/learn-flutter.git

  有关更多内容,请参阅www.flydean.com

  最受欢迎的解释,最深的干货,最简单的教程,您不知道的许多技巧正在等待您发现!

  欢迎注意我的公共帐户:“程序的事情”,了解技术并更好地了解您!

  原始:https://juejin.cn/post/71131777754006192165