簡體   English   中英

在 listview flutter 中添加多個 onTap 事件的最佳方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM