我可以使用 onTap 从列表磁贴转到新屏幕吗?


我是颤动

和飞镖语言的新手,这是我的第一个真正的项目,基本上有很多屏幕,我想知道是否可以使用 ListTile 中的 onTap 进入新屏幕? 如果没有,我希望有人指导我。谢谢

这是我到目前为止的代码:

import 'package:flutter/material.dart';
import 'package:rate_your_professor/screens/firstScreen.dart';
void main() {
  runApp(MaterialApp(
    debugShowCheckedModeBanner: false,
    title: 'Rate ',
    home: Scaffold(
      appBar: AppBar(
        title: Text("XXXXXXXXXX", textDirection: TextDirection.rtl),
      ),
      body: RaisedBookButton(),
    ),
  ));
}
Widget getListView(){
  var listView = ListView(
    children: <Widget>[

      Text("XXXXXXXXXXXXXXX", textDirection: TextDirection.rtl,textAlign: TextAlign.center,),
      ListTile(
        leading: Icon(Icons.location_city),
        title: Text("XXXXX ", textDirection: TextDirection.rtl),
        subtitle: Text("XXXXXXXXXX", textDirection: TextDirection.rtl,),
        onTap: (){
        //Here where I would like to go to new screen
        },
      ),
    ],
  );
  return listView;
}

为了使用导航器转到不同的页面,您需要应用程序的 BuildContext。以下是如何获取它的示例:

import 'package:flutter/material.dart';
import 'package:rate_your_professor/screens/firstScreen.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Some App',
      home: SomeApp(),
    );
  }
}
class SomeApp extends StatelessWidget {
  Widget getListView(BuildContext context) {
    var listView = ListView(
      children: <Widget>[
        Text(
          "XXXXXXXXXXXXXXX",
          textDirection: TextDirection.rtl,
          textAlign: TextAlign.center,
        ),
        ListTile(
          leading: Icon(Icons.location_city),
          title: Text("XXXXX ", textDirection: TextDirection.rtl),
          subtitle: Text(
            "XXXXXXXXXX",
            textDirection: TextDirection.rtl,
          ),
          onTap: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => YourNewPage(),
                  ),
            );
          },
        ),
      ],
    );
    return listView;
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(body: getListView(context));
  }
}

您可以使用导航器导航到下一个屏幕

如果要转到新屏幕并返回,则需要在此处使用Navigator.push

Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => SecondScreen()),
  );

同时,请查看官方文档以获取有关导航的更多信息。

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: egtList.length,
      itemBuilder: (context, index) {
        return Card(
          child: ListTile(
            leading: Icon(
              Icons.movie_creation_rounded  ,
              color:Color(0xFF575757),
              size: 50.0,
            ),
            title: Text(egtList[index].title.toString()),
            subtitle: Text(egtList[index].examKey.toString()), //egtList[index].examKey.toString()
            trailing: egtList[index].isDone == true
                ? Icon(Icons.circle, color: Colors.green) :  Icon(Icons.circle, color: Colors.grey),
            onTap: () {globals.ShowSnackMessage2Red(egtList[index].examKey.toString(), context) ;
            },
          ),
        );
      },
    );
  }

最新更新