[英]What is the best way to add multiple onTap events in listview flutter?
Widget _myListView(BuildContext context) {
final titles = ['bike', 'boat', 'bus', 'car',
'railway', 'run', 'subway', 'transit', 'walk'];
final icons = [Icons.directions_bike, Icons.directions_boat,
Icons.directions_bus, Icons.directions_car, Icons.directions_railway,
Icons.directions_run, Icons.directions_subway, Icons.directions_transit,
Icons.directions_walk];
final ontaps = [ ,] ```how can i add multiple onTap events ```
return ListView.builder(
itemCount: titles.length,
itemBuilder: (context, index) {
return Card( // <-- Card widget
child: ListTile(
leading: Icon(icons[index]),
title: Text(titles[index]),
onTap: ,
),
);
},
);
}
請幫助我如何輕松添加 onTap 事件以獲得長列表
1.如何以添加圖標、標題、子標題的方式添加 onTap 事件使用字符串 2.我是 flutter 的新手,請原諒我的錯誤.. 謝謝
要為 listtile 中的所有小部件添加 onTap 事件,您可以使用以下代碼,
return ListView.builder(
itemCount: titles.length,
itemBuilder: (context, index) {
return Card( // <-- Card widget
child: ListTile(
leading: IconButton(icon: Icon(icons[index]),onPressed: (){
// add your code on tap for your iconButton
},),
title: Text(titles[index]),
onTap: (){
// add your code on tap for your listview row tile
},
),
);
},
);
這對你有用。
更新的答案,現在如果您選擇自行車,它會導航到其他頁面:
main.dart
import 'package:flutter/material.dart';
import 'package:prova/page.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
routes: {
'other_page': (BuildContext context) => Example(),
},
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Demo'),
),
body: _myListView(context),
);
}
}
Widget _myListView(BuildContext context) {
final titles = [
'bike',
'boat',
'bus',
'car',
'railway',
'run',
'subway',
'transit',
'walk'
];
final icons = [
Icons.directions_bike,
Icons.directions_boat,
Icons.directions_bus,
Icons.directions_car,
Icons.directions_railway,
Icons.directions_run,
Icons.directions_subway,
Icons.directions_transit,
Icons.directions_walk
];
functionBike() {
Navigator.pushNamed(context, 'other_page');
print('directions_bike');
}
functionBoat() {
print('directions_boat');
}
functionBus() {
print('directions_bus');
}
functionCar() {
print('directions_car');
}
functionRailway() {
print('directions_railway');
}
functionRun() {
print('directions_run');
}
functionSubway() {
print('directions_subway');
}
functionTransit() {
print('directions_transit');
}
functionWalk() {
print('directions_walk');
}
final List<Function> ontaps = [
functionBike,
functionBoat,
functionBus,
functionCar,
functionRailway,
functionRun,
functionSubway,
functionTransit,
functionWalk
];
return ListView.builder(
itemCount: titles.length,
itemBuilder: (context, index) {
return Card(
// <-- Card widget
child: ListTile(
leading: Icon(icons[index]),
title: Text(titles[index]),
onTap: () {
ontaps[index]();
},
),
);
},
);
}
希望它有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.