您可以使用PositionedStack 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,它包含了一个红色的正方形容器,并设置其lefttop属性,使其出现在用户点击的位置。注意,在GestureDetector中,我们使用了localPosition属性来获取用户点击的位置。

Flutter 点击生成 Widget: 使用 Positioned 和 Stack

原文地址: https://www.cveoy.top/t/topic/mJim 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录