Flutter 使用 PopupRoute 实现一个高度自定义的Popup组件
import 'package:flutter/material.dart';
class CustomPopup extends PopupRoute {
final Widget child;
CustomPopup({@required this.child});
@override
Color get barrierColor => null;
@override
bool get barrierDismissible => true;
@override
String get barrierLabel => null;
@override
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
return Material(
type: MaterialType.transparency,
child: FadeTransition(
opacity: Tween<double>(begin: 0.0, end: 1.0).animate(CurvedAnimation(
parent: animation,
curve: Curves.linear,
)),
child: child,
),
);
}
}
// 使用示例
void showCustomPopup(BuildContext context) {
Navigator.push(
context,
CustomPopup(
child: Container(
height: 200,
color: Colors.grey,
// 在这里添加你的Popup内容
),
),
);
}
这段代码定义了一个名为CustomPopup
的类,它扩展了Flutter的PopupRoute
类,允许我们创建一个可以自定义的弹出组件。在buildPage
方法中,我们使用了淡入淡出动画来平滑显示弹出内容。使用时,只需调用showCustomPopup
函数,并传入当前的BuildContext
。
评论已关闭