onTap:
в class CustomListTile(){}
конструктор не является именованным параметром; и избегайте передачи пустых функций стрелок (например, () => {}
означает () { return {}; }
). Вместо этого вы можете написать как (){}
.
Попробуйте это:
class HomeScreen extends StatelessWidget {
@override Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Stuff'),
backgroundColor: Colors.blue,
),
drawer: Drawer(
child: ListView(
children: <Widget>[
DrawerHeader(
decoration: BoxDecoration(
gradient: LinearGradient(colors: <Color>[
Colors.red[300],
Colors.red[100],
])
),
child: Container(
child: Column(
children: <Widget>[
Material(
borderRadius: BorderRadius.all(Radius.circular(40.0)),
child: Image.asset('images/Canada_flag.png', width: 100,height: 100,),
),
Text('Flag', style: TextStyle(color: Colors.white, fontSize: 20.0),)
],
),
)),
Column(
children: <Widget>[
CustomListTile(Icons.search,'Search', (){
Navigator.push(context, MaterialPageRoute(builder: (context) => SearchPage()));
}),
],
),
CustomListTile(Icons.fastfood,'Products',(){}),
CustomListTile(Icons.add,'Add Products',(){}),
CustomListTile(Icons.person,'About Us',(){}),
CustomListTile(Icons.vpn_lock,'Privacy',(){}),
],
),)
); } }
class CustomListTile extends StatelessWidget{
IconData icon; String text; Function onTap;
CustomListTile(this.icon, this.text, this.onTap,);
@override Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.fromLTRB(8.0, 0, 8.0, 0),
child: Container(
decoration: BoxDecoration(
border: Border(bottom: BorderSide(color: Colors.grey.shade400))
),
child: InkWell(
splashColor: Colors.orangeAccent,
onTap: onTap,
child: Container(
height: 50,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Row(
children: <Widget>[
Icon(icon),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(text, style: TextStyle(
fontSize: 16.0
),
),
),
],
),
Icon(Icons.arrow_right)
],
),
),
),
),
); } }