单击按钮时添加新小部件,并带有返回小部件的功能

时间:2020-09-28 07:32:00

标签: flutter

您好,我是Flutter的新手,我想知道是否可以通过单击按钮添加新的小部件。 我调查了很多类似堆栈溢出的问题。但是由于我的知识不足,大多数对我来说似乎很复杂且难以掌握。我需要做的就是在旧的构建容器下面添加一些容器

class MedPreC extends StatefulWidget {
  @override
  _MedPreCState createState() => _MedPreCState();
}
Widget returnWidget() {
  return Padding(
    padding: const EdgeInsets.all(8.0),
    child: Container(
      width: double.infinity,
      height: 40,
      color: Colors.red,
    ),
  );
}
class _MedPreCState extends State<MedPreC> {
  var child2 = Column(
    children: [
      returnWidget(),
    ],
  );
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: [
          Expanded(
            child: Container(
              color: Colors.yellow,
              height: 400,
              width: double.infinity,
              child: child2,
            ),
          ),
          RaisedButton(
            child: Text("Add"),
            onPressed: () {
              setState(() {
                //
                child2.children.add(returnWidget());
                //
              });
            },
          )
        ],
      ),
    );
  }
}

这是我到目前为止编写的代码。整个代码将在带有脚手架和其他东西的另一个类中调用 returnWidget()返回一个红色容器 child2是一个在黄色容器内调用的列,其中一个红色容器作为其子容器之一 我需要在按钮上添加更多的红色容器 谢谢您了

2 个答案:

答案 0 :(得分:1)

尝试一下

service2.example.com

答案 1 :(得分:0)

为此,您还需要检查窗口小部件的溢出。因此,您可以检查以下代码。

import 'package:flutter/material.dart';

class MedPreC extends StatefulWidget {
  @override
  _MedPreCState createState() => _MedPreCState ();
}

class _MedPreCState extends State<MedPreC > {
  List<Widget> data = [];

  Widget CustomWidget() {
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: Container(
        width: double.infinity,
        height: 40,
        color: Colors.red,
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          Container(
            color: Colors.yellow,
            height: MediaQuery.of(context).size.height - 60,
            width: double.infinity,
            child: SingleChildScrollView(child: Column(children: data)),
          ),
        ],
      ),
      bottomNavigationBar: Container(
        height: 60,
        width: MediaQuery.of(context).size.width,
        color: Colors.white,
        child: InkWell(
          child: Center(
            child: Container(
                color: Colors.red,
                width: 100,
                height: 40,
                child: Center(child: Text("Add"))),
          ),
          onTap: () {
            setState(() {
              data.add(CustomWidget());
            });
          },
        ),
      ),
    );
  }
}