最近在做Flutter开发,碰到产品提的新的需求,类似于京东的地址选择器,但是baidu了一堆,都只是定死层级的实现效果。不符合产品需求啊。自己码一个,记录一下。(可以根据需要,封装成通用工具)
写的不好,请大佬轻喷。
效果图
WeChat40dd05dfb8dccacffe42e73ee5ec7c22.png
需要注意,这里使用的是
TickerProviderStateMixin
而不是
SingleTickerProviderStateMixin
上代码,注释很清楚。
class EventAreaDialog extends StatefulWidget {
// 这个是我们网络拉取的数据,根据实际你所需要的去变。应该是个树形结构的model
SpaceData spaceData;
// 选中后的callback
EventAreaDialogCallBack eventAreaDialogCallBack;
EventAreaDialog({this.spaceData, this.eventAreaDialogCallBack});
@override
_EventAreaDialogState createState() => _EventAreaDialogState();
}
class _EventAreaDialogState extends State
with TickerProviderStateMixin {
//根据筛选出的数据
Map> datas = new Map();
//选中的model,根据业务需求获取所需要的信息
Map selectDatas = new Map();
//选中的名称
Map selectNameDatas = new Map();
//初始化的tab名称
List _tabs = ["请选择"];
//tab的控制器
TabController _tabController;
//当前所选中的tab位置
int currentTabPos = 0;
@override
void initState() {
super.initState();
//初始化第一层级所需要显示的内容
List list =