NextPageCallback typedef

NextPageCallback = void Function(dynamic pageData(List<String>), int currentPage, int selectIndex)

级联选择器 使用示例:

CascadePicker的page是ListView,没有约束的情况下它的高度是无限的,
因此需要约束高度。

final _cascadeController = CascadeController();

initialPageData: 第一页的数据
nextPageData: 下一页的数据,点击当前页的选择项后调用该方法加载下一页
  - pageCallback: 用于传递下一页的数据给CascadePicker
  - currentPage: 当前是第几页
  - selectIndex: 当前选中第几项
controller: 控制器,用于获取已选择的数据
maxPageNum: 最大页数
selectedIcon: 已选中选项前面的图标,flutter package不能放本地资源文件,因此需要从外部传入,图标在images文件夹下面

Expand(
  child: CascadePicker(
    initialPageData: ['a', 'b', 'c', 'd'],
    nextPageData: (pageCallback, currentPage, selectIndex) async {
      pageCallback(['one', 'two', 'three'])
    },
    controller: _cascadeController,
    maxPageNum: 4,
    selectedIcon: Image.asset("images/ic_select_mark.png", width: 10, height: 10, color: Colors.redAccent,),
)

InkBox(
  child: Container(...)
  onTap: () {
    /// 判断是否完成选择
    if (_cascadeController.isCompleted()) {
      List<String> selectedTitles = _cascadeController.selectedTitles;
      List<int> selectedIndexes = _cascadeController.selectedIndexes;
    }
  }
)

pageData: 下一页的数据 currentPage: 当前是第几页, selectIndex: 当前页选中第几项

Implementation

/// pageData: 下一页的数据
/// currentPage: 当前是第几页,
/// selectIndex: 当前页选中第几项
typedef void NextPageCallback(Function(List<String>) pageData, int currentPage, int selectIndex);