Table of Contents
- ShowSearch
- Hero
- Wrap
- LongPressDraggable
- InteractiveViewer
- ReorderableListView
Flutter 提供了非常丰富的Widget库,有一些Widget可能大部分开发者都不知道。那这篇文章,给大家分享几个,我认为非常厉害的Flutter Widget 或者 Flutter Tips。
1. ShowSearch
开发者可以直接override Flutter的SearchDelegate Class 实现自己的搜索方法。SearchDelegate 有四个需要实现的方法:buildActions、buildLeading、buildResults、和buildSuggestions。我这里在buildActions里添加了clear button,在buildLeading添加了back button,在buildReselts和buildSuggestions 做了相同的操作,每输入一个字母查询一次是否与词库有重合。
2. Hero
假设我们现在有五张图片,初始的时候是一个List,我们想实现点击后查看大图的功能,为了有较好的体验,小图变成大图和大图变回小图时我们分别执行一个“飞行”过渡动画,该效果可以通过hero实现。
这个效果其实算是一个跳转美化,其实不加animation也完全没问题,mvp完成之后才需要考虑其他。
3. Wrap
当row 大于宽度时,就会造成overflow。用expanded 和 WidgetSpan 都不太满足开发需求。大多数时候,我可能会用StaggeredGridView。但是当手机宽度小于一定值的时候,或者产品要求2个列的list时,就很难用StaggeredGridView实现了。Wrap 很好的根据宽度自适应了List。
4. LongPressDraggable
这个widget看名字也很好理解,长按可以拖拽图片(或者其他任意widget)到任意地方。而且可选参数也很多,比如onDragStarted、onDragUpdate、onDraggableCanceled、onDragEnd,可以计算被拖拽组件的位置。
5. InteractiveViewer
用户可以通过拖动、平移、放大缩小child widget。这个Widget可以drag图片并将其拖到手机屏幕的任意位置。其实吧,我暂时也没想到在什么场景下会用到这个widget😂,但是它确实看起来蛮酷的。
6. ReorderableListView
这个是之前我用到的一个Widget。ReorderableListView顾名思义,可以为ListView重新排序。我在这个功能上添加了删除button,可以删除被选中的ListView element。在此基础上还可以添加新的widget到listview里,甚至可以不同形状、不同颜色。大家自己发挥想象力吧~
其实还有很多Widget,在这里就不一一列举了,Flutter的官方文档非常详细。
以上所有示例代码均可以在GitHub查看。
最后想大声说一句,Flutter真的太好用,太良心了。