我是Flutter的新手,所以请原谅我的误会。
最终,我正在尝试提供一个小条列表,每个小条都带有小部件(项目)列表,并且此小条列表可以更改以及每个项目列表都可以更改。
像这样的
等,但我可以继续随意添加和删除条子和物品。 我的幼稚方法基本上如下:
CustomScrollView
。CustomScrollView
为其条子参数引用条子的成员变量列表。setState()
。class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
final List<Widget> slivers = [];
final List<Text> items = [];
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
void _addSliver() {
widget.slivers.add(SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) {
return index < widget.items.length ? widget.items[index] : null;
})));
}
void _addToList() {
setState(() {
widget.items.add(Text('Item ${widget.items.length + 1}'));
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
actions: <Widget>[
IconButton(
icon: Icon(Icons.category),
onPressed: _addSliver,
),
IconButton(
icon: Icon(Icons.add),
onPressed: _addToList,
)
],
),
body: CustomScrollView(
slivers: widget.slivers,
),
);
}
}
上面的代码仅用于测试单个条子和该条子中的多个项目。我在调试时注意到,_build
的{{1}}函数中不会重建已有的条子,因为它已经存在于Map中,所以很明显我对如何实现该条有理解。 >
我是否仅需要强制以某种方式进行重建?还是有一种更容易的方法来实现我所缺少的?
答案 0 :(得分:0)
似乎这个想法与使用数组容纳function yourmodule_views_pre_execute(&$view) {
if ($view->current_display == "xyz") {
$rawQuery = "SELECT something where field = :arg1 ";
$q = CustomSQLQuery::query($rawQuery, [
":arg1" => "foo"
]);
$view->build_info['query'] = $q;
$view->build_info['count_query'] = $q;
}
}
的子代不同。每次调用Column
时都需要重新构建窗口小部件(除了实际显示的窗口小部件外)。
build
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
final Map<int, List<Text>> slivers = {};
@override
_MyHomePageState createState() => _MyHomePageState();
}
如果有更好的方法可以实现这一点,我真的很想知道。