我是颤动
和飞镖语言的新手,这是我的第一个真正的项目,基本上有很多屏幕,我想知道是否可以使用 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) ;
},
),
);
},
);
}