私はFlutterにまったく慣れていません。それがどのようなものかを確認するためだけにテストしており、かなり基本的な質問があります。詳細画面を表示できるように、ListViewアイテムのタップを認識するにはどうすればよいですか?
ListViewの基本は知っていますが、アイテムがタップされるたびにコールバックをアタッチする方法が見つからないようです。
私がこれまでに持っているのは次のとおりです。
class TestApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: "Test app",
home: new HomeScreen()
);
}
}
class HomeScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return new HomeState();
}
}
class HomeState extends State {
List<Item> _items;
HomeState () {
_items = [new Item("Item 1"), new Item("Item 2")];
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Test App")
),
body: new Container(
child: new ListView.builder(
padding: new EdgeInsets.all(8.0),
itemCount: _items.length,
itemBuilder: (_, int index) => _items[index],
)
)
);
}
void _onDetail(Item item) {
print("ITEM TAPPED");
}
}
class Item extends StatelessWidget {
final String text;
Item(this.text);
@override
Widget build(BuildContext context) {
return new Container(
padding: new EdgeInsets.all(8.0),
child: new Center(
child: new Text(this.text)
)
);
}
}
具体的には、タップしたアイテムで「onDetail」メソッドを呼び出すにはどうすればよいですか?
ありがとう。
GestureDetector
あなたの友だちです。または代わりに、InkWell
とInkResponse
あなたはマテリアルデザインを使用している場合。
これらのウィジェットの1つでウィジェットをラップし、onTap
コールバックを追加するだけです
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加