Flutter は比較的新しいフレームワークであるため、単純なタスクについてはあまりサポートされていません。具体的には、列ウィジェットにカード ウィジェットを追加する方法を尋ねています。意味するところを説明するために、以下にソース コードを示します。
以下のように新しいカードを作成する関数があるとします。
buildRow(barcode, letter, name, price) {
return new Card(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new ListTile(
leading: new CircleAvatar(
child: new Text(letter),
),
title: new Text(name),
subtitle: new Text("\$" + price),
trailing: new Text(
"x1",
style: new TextStyle(color: Colors.lightBlue),
textScaleFactor: 1.2,
),
),
],
),
);
}
var snack = buildRow("091918229292", "C", "Crackers", "\$4.00");
var fruit = buildRow("091928229292", "P", "Pomegranate", "\$2.00");
var juice = buildRow("091948229292", "K", "Kiwi Juice", "\$20.00");
そして、次の画面/ページが表示されます。
class Home extends StatefulWidget {
@override
HomePage createState() => new HomePage();
}
class HomePage extends State<Home> {
@override
Widget build(BuildContext context) {
return new Column(children: <Widget>[
]);
}
}
提供されているすべてのコードが同じファイル内にあるとします。ホーム画面の列ウィジェットの子に「スナック」、「フルーツ」、「ジュース」を追加するにはどうすればよいでしょうか?
ベストアンサー1
これは、ソースを手動で更新する場合の基本的な例です。
Column(
children: _createChildren(),
)
///////
これは、列にフィードするウィジェットのリストを作成する方法です
List<int> someList = [1, 2, 3, 4, 5];
List<Widget> _createChildren() {
return new List<Widget>.generate(someList.length, (int index) {
return Text(someList[index].toString());
});
}
//////
リストを更新するときは、setState
void _somethingHappens() {
setState(() {
someList.add(6);
});
}
ここで、ストリームからデータを受信する場合は をチェックできますStreamBuilder
。データが から取得される場合は をFuture
使用できますFutureBuilder
。
この例は、通常のBuilder