Created
September 24, 2020 07:57
-
-
Save hellohejinyu/13eff56072bf9a04021e31da20f2ab18 to your computer and use it in GitHub Desktop.
flutter_intro_2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter/material.dart'; | |
final Color darkBlue = Color.fromARGB(255, 18, 32, 47); | |
void main() { | |
runApp(MyApp()); | |
} | |
class MyApp extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return MaterialApp( | |
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue), | |
debugShowCheckedModeBanner: false, | |
home: Scaffold( | |
body: Center( | |
child: MyWidget(), | |
), | |
), | |
); | |
} | |
} | |
class MyWidget extends StatefulWidget { | |
@override | |
_MyWidgetState createState() => _MyWidgetState(); | |
} | |
class _MyWidgetState extends State<MyWidget> { | |
OverlayEntry overlayEntry; | |
final globalKey = GlobalKey(); | |
@override | |
Widget build(BuildContext context) { | |
return Center( | |
child: Column( | |
mainAxisSize: MainAxisSize.min, | |
children: [ | |
RaisedButton( | |
onPressed: () { | |
RenderBox renderBox = globalKey.currentContext.findRenderObject(); | |
Size size = renderBox.size; | |
Offset offset = renderBox.localToGlobal(Offset.zero); | |
print(size); | |
print(offset); | |
/// 1. 创建一个 overlayEntry 实例,builder 方法返回一个 Widget | |
/// 该 Widget 会被渲染到页面顶层 | |
overlayEntry = OverlayEntry( | |
builder: (context) => Stack( | |
children: [ | |
Container( | |
color: Colors.red.withOpacity(.4), | |
), | |
Positioned( | |
child: RaisedButton( | |
onPressed: () { | |
/// 3. 执行 remove 方法销毁 overlayEntry 实例 | |
overlayEntry.remove(); | |
}, | |
child: Text('点我关闭 OverlayEntry'), | |
), | |
left: 100, | |
top: 100, | |
) | |
], | |
), | |
); | |
/// 2. 使用 OverlayState.insert 方法来显示 overlayEntry | |
Overlay.of(context).insert(overlayEntry); | |
}, | |
child: Text( | |
'点我康康控制台输出', | |
key: globalKey, | |
), | |
), | |
], | |
), | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment