【发布时间】:2019-11-23 19:44:17
【问题描述】:
是否有任何解决方案可以使拖放对话框颤抖?例如,在屏幕中心显示对话框后,我想将其拖到屏幕顶部以在当前封面上进行全屏对话框,例如此代码是显示对话框的简单实现,我不确定,我该怎么做
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(title: 'Flutter Demo', theme: ThemeData(), home: Page());
}
}
class Page extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton.icon(
onPressed: () {
showDialog(
context: context,
builder: (_) => FunkyOverlay(),
);
},
icon: Icon(Icons.message),
label: Text("PopUp!")),
),
);
}
}
class FunkyOverlay extends StatefulWidget {
@override
State<StatefulWidget> createState() => FunkyOverlayState();
}
class FunkyOverlayState extends State<FunkyOverlay>
with SingleTickerProviderStateMixin {
AnimationController controller;
Animation<double> scaleAnimation;
@override
void initState() {
super.initState();
controller =
AnimationController(vsync: this, duration: Duration(milliseconds: 450));
scaleAnimation =
CurvedAnimation(parent: controller, curve: Curves.elasticInOut);
controller.addListener(() {
setState(() {});
});
controller.forward();
}
@override
Widget build(BuildContext context) {
return Center(
child: Material(
color: Colors.transparent,
child: ScaleTransition(
scale: scaleAnimation,
child: Container(
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0))),
child: Padding(
padding: const EdgeInsets.all(50.0),
child: Text("Well hello there!"),
),
),
),
),
);
}
}
【问题讨论】:
-
您是否尝试过使用
draggable小部件? -
@Abbas.M 不,我不使用它
-
您应该检查一下,因为它可能会达到您的要求。我个人从未使用过它,但您可以查看文档here
-
拖放有两个与它的逻辑相关的组件,你能定义你需要拖动哪个对象和你需要拖放到哪个对象吗?还需要在放置后全屏显示哪个对象?
-
@SaedNabil 嗨,所有对象都只有一个对话框,我还有另一个对话框,例如
container()
标签: flutter drag-and-drop dialog