flutter中删除组件,思路如下:
1、在上层widget中写删除方法,在生成下层组件的同时将删除方法作为构造参数传入
var rows = <Widget>[];
rows.add(new Row_meta(UniqueKey(), removeMetaRow));
void removeMetaRow(Widget w) {
rows.remove(w);
setState(() {});
}
2、将下层组件生成类,构造参数有key和删除方法,在一个按钮的onPressed方法中回调删除方法。key是必要的,否则flutter会删除其他组件,我测试时候,老是删除最后一个row_meta组件。
class Row_meta extends StatefulWidget {
Function callback;//删除回调方法作为变量传入
//实现删除组件的功能,key是必要的
Row_meta(Key key, @required this.callback) : super(key: key);
onPressed: () {
//回调删除组件的方法,同时传入要删除的组件组件参数(即自身)
widget.callback(this.widget);
},
-------------以下是全部代码--------------
import 'dart:html';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import '../m.dart';
//提交基础信息视图
class ViewCommitMetaInfo extends StatefulWidget {
@override
_ViewCommitMetaInfoState createState() => _ViewCommitMetaInfoState();
}
class _ViewCommitMetaInfoState extends State<ViewCommitMetaInfo>
with AutomaticKeepAliveClientMixin {
GlobalKey<FormState> _formKey = new GlobalKey<FormState&