,用于保存滑动过程中的状态; 2....递归 有的条目有子条目,有的没有,通过递归的方式遍历出每条数据; 通过 bean.children.isEmpty 来结束递归; 如 “直辖市”中的北京,下面没有 “市”了,也就是children.isEmpty...源码 学习flutter,很多不了解的地方都可以试着看看对应源码上面的注释。...extends StatefulWidget { 上面一段是 ExpansionTile 的源码注释。...粗略一看会发现几个熟悉的字眼:ListView,ListTile 不错,实现层级菜单的效果,需要搭配使用ListView与ListTile, 上面贴的关键代码中 _buildItem()方法恰恰符合这一点
注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本:1.12.13+hotfix.5 Dart版本:2.7.0 ReorderableListView是通过长按拖动某一项到另一个位置来重新排序的列表组件...ReorderableListView需要设置children和onReorder属性,children是子控件,onReorder是拖动完成后的回调,用法如下: List items...的每个子控件必须设置唯一的key,ReorderableListView没有“懒加载”模式,需要一次构建所有的子组件,所以ReorderableListView并不适合加载大量数据的列表,它适用于有限集合且需要排序的情况...header参数显示在列表的顶部,用法如下: ReorderableListView( header: Text( '一枚有态度的程序员', style: TextStyle(color...reverse`参数设置为true且ReorderableListView的滚动方向为垂直时,滚动条直接滑动到底部,如果是水平方向则滚动条直接滑动到右边,默认为false,用法如下: ReorderableListView
文章目录 一、ExpansionTile 构造方法 二、完整代码示例 三、相关资源 一、ExpansionTile 构造方法 ---- 下面是 ExpansionTile 的构造方法 ; 其中 required...this.title 是必须要设置的参数 ; class ExpansionTile extends StatefulWidget { /// Creates a single-line [ListTile...const ExpansionTile({ Key?...map((name) => _generateWidget(name)).toList(), ); } /// 生成 ExpansionTile 下的 ListView 的单个组件.../docs/ Flutter 相关问题 : https://flutterchina.club/faq/ ( 入门阶段推荐看一遍 ) GitHub 上的 Flutter 开源示例 : https://download.csdn.net
type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21lbmdrczE5ODc=,size_16,color_FFFFFF,t_70] 注意:无特殊说明,Flutter...版本及Dart版本如下:Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 ReorderableListView是通过长按拖动某一项到另一个位置来重新排序的列表组件。...ReorderableListView需要设置children和onReorder属性,children是子控件,onReorder是拖动完成后的回调,用法如下: List items...的每个子控件必须设置唯一的key,ReorderableListView没有“懒加载”模式,需要一次构建所有的子组件,所以ReorderableListView并不适合加载大量数据的列表,它适用于有限集合且需要排序的情况...效果如下: [20200307150024591.gif] header参数显示在列表的顶部,用法如下: ReorderableListView( header: Text( '一枚有态度的程序员
【Flutter Widgets大全】是老孟耗费大量精力整理的,总共有330多个组件的详细用法,开源到Github上,希望可以帮助到大家,开源不易,转发一下可不可以?。...Flutter Widgets 【Flutter Widgets 大全】 为 Flutter 老孟 网站项目,共收录 330 多个 Widgets,此电子书并不适合入门(一个一个组件学习),适合当作手册...,需要的时候进行查阅。...为了方便对比学习,我将相近或相反功能的组件整理到一个文件中,比如所有的 Button 类组件、弹出类组件等。 如果想系统的学习入门知识,请到 Flutter 老孟 实战 查看。...DropdownButtonHideUnderline 在线查看 ErrorWidget 在线查看 ExpandIcon 在线查看 Expanded 在线查看 ExpansionPanelList 在线查看 ExpansionTile
前面我们对于 ListView 的操作讲过 Flutter 滑动删除最佳实践,那现在我们来了解一下 ListView 的拖拽排序。 效果如下: ?...2.然后在 build 方法中返回 ReorderableListView3.ReorderableListView 中的 children 为用颜色定义好的 Card4.在 onReorder 回调中打印两个参数...当中,我们可以封装很多的 Widget 来为我们日后的开发来节省时间, 当然,也不要忘记 Flutter 当中的 Widget 测试。...References [1] List: https://api.flutter.dev/flutter/dart-core/List-class.html [2] children: https://...api.flutter.dev/flutter/material/ReorderableListView/children.html
---- Flutter Unit 解牛篇 将对项目的一些实现点进行剖析。 很多朋友问我,你代码折叠面板怎么做的?ExpansionTile展开的线去不掉吧?...确实ExpansionTile展开上下会有线,非常难看,所以我未使用ExpansionTile方案 折叠效果的核心代码在源码的: components/project/widget_node_panel.dart...Flutter Unit基本就是根据这种方法实现的代码面板折叠。 - - ? ?...---- 二、魔改ExpansionTile实现方案 上周六晚8:30在B站直播了ExpansionTile源码的解析。 只要看懂源码,其实魔改一下也是so easy 的。...null : Column(children: widget.children), ); } } 复制代码 ---- 在直播中说了ExpansionTile的核心实现是通过ClipRect
color, ), deleteIconColor: color, deleteButtonTooltipMessage: "删除该条", ); } } 在今天的文章中我们来看下...ExpansionTile的使用。...ExpansionTile ---- ExpansionTile是什么东西?其实就是一个有标题可以展开的控件而已,其他就跟其他的layout没有很大的差别了。...接下来还是来看个简单的例子吧 代码: ---- import 'package:flutter/material.dart'; class MyApp extends StatelessWidget...可以看到我们在文字的左侧放置了一个“火”的图标,把文字的右侧的图标改成了一个向右的小箭头,效果还不错,但是细心的小伙伴会发现右侧的箭头并没有像默认的trailing那样会随着ExpansionTile的展开和关闭来做变换
Flutter Unit 解牛篇 将对项目的一些实现点进行剖析。 很多朋友问我,你代码折叠面板怎么做的?ExpansionTile展开的线去不掉吧?...确实ExpansionTile展开上下会有线,非常难看,所以我未使用ExpansionTile方案 折叠效果的核心代码在源码的: components/project/widget_node_panel.dart...详见文章: toggle_rotate Flutter Unit基本就是根据这种方法实现的代码面板折叠。...二、魔改ExpansionTile实现方案 上周六晚8:30在B站直播了ExpansionTile源码的解析。 只要看懂源码,其实魔改一下也是so easy 的。...null : Column(children: widget.children), ); } } 复制代码 在直播中说了ExpansionTile的核心实现是通过ClipRect和Align
前言 ---- 在前面的文章中我们介绍了可以展开的带标题控件ExpansionTile的用法,在文章的最后还是按照惯例给大家留下了一个问题。 实现如下效果: ?...可以看到界面整体上是一个listView,在ListView的第二例是一个ExpansionTile,ExpansionTile的内部是多个ListTile,trailing结合自定义动画将“+”icon...旋转22.5°变成了一个“×”,并且在ExpansionTile展开时改变了icon的颜色。...那么它又和前面讲过的ExpansionTile有什么区别,其实长得还是挺想的但是ExpansionPanelList在展开和关闭的时候是有动画的,比较不那么突兀。...小结 ---- 使用ExpansionPanelList可以实现带动画的展开布局效果 ExpansionPanelList中的ExpansionPanel是需要受ExpansionPanelList的点击事件处理的
flutter weekly 是一份免费的每周咨询,可帮助你在 Flutter 开发方面保持领先地位。...这是一个有深度的文章,作者分享了他用flutter开发跨平台应用的经验。...不论你是不是flutter的初学者 ,这门免费的Flutter课程都是值得学习的。...Flutter Tutorial - ReorderableListView [2022] (by Drag and Drop)....在使用Flutter 中使用ReorderableListView,通过拖放来重新排序列表。 插件 restio受OkHttp启发而开发的一块精简强大的http客户端。
「诶诶诶,**,怎么只显示了一部分,剩下的怎么画不下去」 日常开发中,会遇到很多这种情况,许多界面不是一页就能够显示完的。...,所以 Flutter 提供了 separated 方法用来快速构建带有分割线的 ListView 加入我们的 item 之间的分割线需要如下样式:奇数位和偶数位之间用黑色分割线,偶数位和奇数位之间用红色分割线...ExpansionTile 既然讲到了 ListView,在日常开发中,折叠列表也是一个比较常用的,所以这边要提下 ExpansionTile 这个部件,因为相对比较简单,所以直接上代码了 class...GridView.builder 前面介绍的方法中,生成 item 的方式基本上是通过 List 进行转换的,在 custom 提到了 IndexWidgetBuilder 的生成方式,当然,在 ListView...因为 GridView 和 ListView 亮着都是可滑动的部件,直接拼接肯定会有「滑动冲突」,所以 Flutter 就提供了一个粘合剂,CustomScrollView,那么 Flutter 如何实现呢
和尚继续整理 Flutter 中日常用到的小知识点。 1....Flutter 提供了13种状态,但需注意的是有些是区分 Android 和 iOS 的,使用时需加注意。 ?...在当前页面中设置统一的 DefaultTextStyle 默认文本样式,在当前页面中用到的 Text 默认应用的都是该样式,若需要调整部分样式,直接设置 TextStyle 即可;若不需要重用该样式,设置...ExpansionTile 扩展Tile 和尚在学习过程中尝试了一下 ExpansionTile,是一个可向下扩展空间的 Widget,如效果图。...Spacer 创建一个可调节的空间隔,可用于调整 Flex 容器(如行或列)中窗口小部件之间的间距;默认 flex: 1。 ?
在Flutter中,各种提示框、弹出框是如何实现的呢?今天我们就来聊一聊这个问题。 首先咱们来聊聊Flutter系统内置的Dialog。...Flutter系统内置的Dialog 关于Flutter系统内置的Dialog,我们可以从两个层面去讨论,一个是showDialog层面,一个是showModalBottomSheet层面。...需要注意的是,上面的代码中,我们在对应的Button中单独地响应了点击事件,其实我们也可以对Dialog内部的按钮点击事件进行统一处理的。...如何自定义Dialog 上面我们讲了Flutter的内置提示框,还介绍了一款flutter第三方提示组件fluttertoast,通常情况下,这些就满足我们日常开发需求了。...和SimpleDialog,都是在showDialog中的builder函数中返回的,我们自定义的Dialog也是在这个函数中返回。
本文内容主要翻译自Keys in Flutter, 最初翻译动机是原作者写的比较通俗,其次 key 知识点在 Flutter 中比较重要,但在翻译过程中发现不配合相关源码很难理解作者意思而且看完容易忘,...---- 在使用 Flutter 时,我们经常会遇到一个叫做 Key 的东西。Key 是 Flutter 中几乎所有 widget 都具有的属性。但它并不常用而容易被忽视。...当渲染 widget 时,Flutter 不仅会构建 widget 树,同时也会构建其对应的元素树。元素树持有 widget 树中 widget 的信息及其子 widget 的引用。...在修改和重新渲染的过程中,Flutter 查找元素树以查看其是否已改变,以便在元素未改变时可以复用旧元素。 ---- 批注及说明: ① widget 树相当于配置,元素树相当于实例对象。...页面存储键 该键用来保留用户在滚动视图中的滚动位置,以便以后可以保存。 参考链接 说说 Flutter 中最熟悉的陌生人 —— Key
这个方法对于理解 Flutter 渲染过程非常重要。简单了解下。...其中最重要的是 drawFrame 方法,它的处理过程如下 布局阶段 - 对系统中的所有标记为脏的 RenderObject (如何将对象标脏以便布局,可参考 RenderObject.markNeedsLayout...) 进行布局 compositing bits 阶段 - 更新所有标脏 RenderObject 中的 compositing bits。...具体参考 RenderObject.markNeedsCompositingBitsUpdate 绘制阶段 - 系统中的所有标脏 RenderObject 被重绘。这个过程生成 Layer 树。...如何将对象标脏以便绘制,可参考 RenderObject.markNeedsPaint 合成阶段 - 将 layer tree 转换成 Scene 并发送到 GPU semantics 阶段 - 系统中的所有标脏
简介我们在使用flutter的过程中,有时候需要控制某些组件是否展示,一种方法是将这个组件从render tree中删除,这样这个组件就相当于没有出现一样,但是有时候,我们只是不想展示这个widget,...比如我们创建一个OffstageApp,这是一个StatefulWidget,在它的createState方法中,返回一个State对象,在createState方法中,我们定义一个...我们提供一个ElevatedButton,在它的onPressed方法中,我们调用setState方法来修改_offstage,如下所示:ElevatedButton( child:...好了,这样我们的代码就写好了,最后将OffstageApp放到Scaffold中运行,我们可以得到下面的界面:默认Offstage是不会展示的。...本文的例子:https://github.com/ddean2009/learn-flutter.git
今天我们就来看看,如何在 Flutter 中给你的 App 添加换肤功能。...状态管理:通俗的讲,当我们想在多个页面(组件/Widget)之间共享状态(数据),或者一个页面(组件/Widget)中的多个子组件之间共享状态(数据),这个时候我们就可以用 Flutter 中的状态管理来管理统一的状态...因为切换主题通常会在设置界面中出现,所以这里我用了一个ExpansionTile,这是一个可以展开的ListTile,代码如下: …………ExpansionTile( leading: Icon(Icons.color_lens...至此我们的换肤功能也就完成了,想要获取完整代码的可以关注公众号「01 二进制」,后台回复「Flutter 主题切换」。 最后 以上就是关于如何在 Flutter 中切换主题的详细内容了。...可以看出,相较于原生应用主题的适配,在 Flutter 中实现换肤的功能简单很多了。
今天我们会来讲解一下ListView的一些高级用法。ListView的常规用法ListView的常规用法就是直接使用ListView的构造函数来构造ListView中的各个item。...其中ListView有一个children属性,它接收一个widget的list,这个list就是ListView中要呈现的对象。...因为这次我们要使用builder,所以没有必要在item生成的时候就创建好widget,我们可以将widget的创建放在ListView的builder中。...创建不同item的完整代码如下:import 'package:flutter/material.dart';void main() { runApp( MyApp( items: List...本文的例子:https://github.com/ddean2009/learn-flutter.git
Flutter中动画的核心类库是Animation,它并不是一个widget,Animation是一个抽象类,就相当于一个定时器,用来描述当前动画的开始,暂停,以及数值状态,与ui渲染没有任何关系,它不能直接控制...因为Flutter中屏幕刷新时会通知Ticker,锁屏后屏幕会停止刷新,所以Ticker就不会再触发。...最简单的做法是将SingleTickerProviderStateMixin添加到State的定义中。...Tween类中提供了两个泛型参数begin和end,也就是你可以指定你要进行变化的属性值,比如有很多Flutter中已经封装好的继承自Tween的补间动画类:ColorTween,SizeTween,BorderTween...Flutter中封装好了很多个曲线动画效果的Curve,开发者也可以自定义Curve效果。
领取专属 10元无门槛券
手把手带您无忧上云