widgetOverlay function
Widget
widgetOverlay({
- required dynamic onSelect(
- int index,
- NsgDropdownMenuItem element
- required List<
NsgDropdownMenuItem> widgetList(), - required GlobalKey<
State< key,StatefulWidget> > - NsgBaseController? listController,
- Widget? child,
Implementation
Widget widgetOverlay({
required Function(int index, NsgDropdownMenuItem element) onSelect,
required List<NsgDropdownMenuItem> Function() widgetList,
required GlobalKey key,
final NsgBaseController? listController,
Widget? child,
}) {
List<Widget> list() {
List<Widget> resultList = [];
var widgetList2 = widgetList();
if (widgetList2.isEmpty) {
resultList.add(Padding(padding: const EdgeInsets.all(10.0), child: Text(tran.no_options_available)));
} else {
for (var element in widgetList2) {
bool hovered = false;
resultList.add(
StatefulBuilder(
builder: (context, setstate) {
return InkWell(
onHover: (value) {
hovered = value;
setstate(() {});
},
onTap: () {
onSelect(widgetList2.indexOf(element), element);
},
child: Container(
decoration: BoxDecoration(color: hovered ? nsgtheme.colorPrimary.withAlpha(51) : Colors.transparent),
child: element,
),
);
},
),
);
}
}
return resultList;
}
if (child != null) {
return Container(
key: key,
decoration: BoxDecoration(color: nsgtheme.colorSecondary.withAlpha(200), borderRadius: BorderRadius.circular(ControlOptions.instance.borderRadius)),
padding: const EdgeInsets.all(5),
child: IntrinsicWidth(child: child),
);
} else {
return Container(
key: key,
decoration: BoxDecoration(color: nsgtheme.colorSecondary.withAlpha(200), borderRadius: BorderRadius.circular(ControlOptions.instance.borderRadius)),
padding: const EdgeInsets.all(5),
child: IntrinsicWidth(
child: listController == null
? Column(mainAxisSize: MainAxisSize.min, children: list())
: Column(
mainAxisSize: MainAxisSize.min,
children: [
listController.obx(
(state) => Column(mainAxisSize: MainAxisSize.min, children: list()),
onLoading: const Padding(padding: EdgeInsets.all(15.0), child: NsgSimpleProgressBar(disableAnimation: true)),
),
],
),
),
);
}
//.asGlass(tintColor: Colors.black, frosted: false)
}