buildOverlay method
构建 overlay 内容小部件
Implementation
@override
Widget buildOverlay(BuildContext context) {
final drawerMaxSize = _calcDrawerMaxSize(
size: widget.maxPrimarySize,
overlaySize: overlayState.size.value!,
direction: direction(context),
);
Widget result = MediaQuery.removePadding(
context: context,
removeLeft: direction(context) == AxisDirection.right,
removeRight: direction(context) == AxisDirection.left,
child: ConstrainedBox(
constraints: ElDrawer.createBoxConstraints(
isVertical: isVertical,
drawerMaxSize: drawerMaxSize,
),
child: Builder(
key: contentKey,
builder: (context) {
return widget.overlayBuilder(context);
},
),
),
);
result = widget.transitionBuilder(context, result);
result = ValueListenableBuilder(
valueListenable: obs,
builder: (context, value, child) => FocusScope(
node: focusScopeNode,
skipTraversal: true,
descendantsAreFocusable: value == true,
child: child!,
),
child: result,
);
if (_allowedDrag(widget.enabledDrag) == false) return result;
result = _DrawerDrag(
behavior: HitTestBehavior.deferToChild,
onDragUpdate: (delta) {
animationController.value += delta;
},
onDragEnd: _dragEnd,
direction: direction(context),
getContentKey: () => contentKey,
child: result,
);
return result;
}