Flutter 点击生成 Widget: 使用 Positioned 和 Stack
您可以使用Positioned和Stack widget来在点击的位置生成一个widget。下面是一个简单的示例:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<Widget> _widgets = [];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Add Widgets on Tap'),
),
body: Stack(
children: [
..._widgets,
GestureDetector(
onTapDown: (details) {
setState(() {
_widgets.add(
Positioned(
left: details.localPosition.dx,
top: details.localPosition.dy,
child: Container(
width: 50,
height: 50,
color: Colors.red,
),
),
);
});
},
child: Container(
width: double.infinity,
height: double.infinity,
),
),
],
),
);
}
}
在上面的示例中,我们使用了一个Stack widget来叠加多个widget。当用户在屏幕上点击时,我们添加一个Positioned widget,它包含了一个红色的正方形容器,并设置其left和top属性,使其出现在用户点击的位置。注意,在GestureDetector中,我们使用了localPosition属性来获取用户点击的位置。
原文地址: https://www.cveoy.top/t/topic/mJim 著作权归作者所有。请勿转载和采集!