SpinnerBox.builder constructor
SpinnerBox.builder({
- Key? key,
- List<
SpinnerHeaderData> ? titles, - PopupValueNotifier? controller,
- required SpinnerBoxBuilder builder,
- Widget? prefix,
- bool isExpandPrefix = false,
- Widget? suffix,
- bool isExpandSuffix = false,
- SpinnerHeaderTheme theme = defaultPinnerTheme,
- Color? barrierColor,
- SpinnerViewTransitionsBuilder? transitionsBuilder,
每次唤起弹框,都会重新构建内部视图,可以减少对数据源的监听修改
使用示例:
SpinnerBox.builder(
prefix: prefix,
suffix: suffix,
titles: const ['title1', 'tilte2'],
builder: (notifier) => [
CustomWidget().heightFll,
CustomWidget().heightPart,
],
)
控制器方法:
notifier.updateName('update-title1');
'or' notifier.close();
'or' notifier.reset();
Implementation
SpinnerBox.builder({
super.key,
List<SpinnerHeaderData>? titles,
PopupValueNotifier? controller,
required SpinnerBoxBuilder builder,
this.prefix,
this.isExpandPrefix = false,
this.suffix,
this.isExpandSuffix = false,
this.theme = defaultPinnerTheme,
this.barrierColor,
this.transitionsBuilder,
}) {
assert(
(titles?.isNotEmpty == true || controller != null) &&
!(titles?.isNotEmpty == true && controller != null),
'`SpinnerBox.builder` 构造方法 `titles` 或者 `controller` 有且只有一个有效。');
isRebuilder = true;
if (controller != null) {
spinnerController = controller;
} else if (titles?.isNotEmpty == true) {
spinnerController = PopupValueNotifier.titles(titles!);
}
// widgets = builder.call(controller);
widgetsBuilder = builder;
}