我是个新手。我尝试创建一个ecomm应用程序。我有一个10个类别和1个自定义小工具。如何使用on tap功能来指导这10个类别?我的意思是,对于每个_categoryTap,直接使用这个类别。类似于:_categoryTap(Navigate to)或?为我糟糕的英语道歉))我的代码:
class ListOfCategory extends StatefulWidget {
@override
_ListOfCategoryState createState() => _ListOfCategoryState();
}
class _ListOfCategoryState extends State<ListOfCategory> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
// padding: EdgeInsets.only(left: 40, right: 40),
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 30, left: 40, right: 40),
child: Image.asset('assets/dafna_logo.png'),
),
SizedBox(height: 15),
Padding(
padding: const EdgeInsets.all(8.0),
child: Wrap(
children: <Widget>[
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
],
),
),
],
),
);
}
}
Widget _categoryTap(String _nameCategory) {
return InkWell(
onTap: () {},
child: Padding(
padding: EdgeInsets.all(5),
child: Column(
children: <Widget>[
Container(
height: 120,
width: 120,
color: Colors.blue,
),
Container(
width: 120,
height: 35,
// color: Colors.red,
child: Text(_nameCategory,),
),
],
),
),
);
}发布于 2020-01-29 00:58:08
如果你是以静态的方式来做这件事,那么这是你可以检查的下面的例子
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: ListView(
// padding: EdgeInsets.only(left: 40, right: 40),
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 30, left: 40, right: 40),
child: Icon(Icons.add),
),
SizedBox(height: 15),
Padding(
padding: const EdgeInsets.all(8.0),
child: Wrap(
children: <Widget>[
_categoryTap('test1'),
_categoryTap('test2'),
_categoryTap('test3'),
_categoryTap('test4'),
_categoryTap('test5'),
_categoryTap('test6'),
_categoryTap('test6'),
_categoryTap('test8'),
_categoryTap('test9'),
],
),
),
],
),
),
);
}
Widget _categoryTap(String _nameCategory) {
return InkWell(
onTap: () {
print('tap');
switch (_nameCategory) {
case 'test1':
{
// statements;
print('Test 1');
}
break;
case 'test2':
{
//statements;
}
break;
// .... and so on
default:
{
//statements;
print('you command whatever you want');
}
break;
}
},
child: Padding(
padding: EdgeInsets.all(5),
child: Column(
children: <Widget>[
Container(
height: 120,
width: 120,
color: Colors.blue,
),
Container(
width: 120,
height: 35,
// color: Colors.red,
child: Text(
_nameCategory,
),
),
],
),
),
);
}如果能用的话请告诉我谢谢。
发布于 2020-01-29 13:43:51
试试这个:
class ListOfCategory extends StatefulWidget {
@override
_ListOfCategoryState createState() => _ListOfCategoryState();
}
class _ListOfCategoryState extends State<ListOfCategory> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
// padding: EdgeInsets.only(left: 40, right: 40),
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 30, left: 40, right: 40),
child: Image.asset('assets/dafna_logo.png'),
),
SizedBox(height: 15),
Padding(
padding: const EdgeInsets.all(8.0),
child: Wrap(
children: <Widget>[
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
_categoryTap('name'),
],
),
),
],
),
);
}
Widget _categoryTap(String _nameCategory) {
return InkWell(
onTap: () {
redirectToEditProfile(context);
},
child: Padding(
padding: EdgeInsets.all(5),
child: Column(
children: <Widget>[
Container(
height: 120,
width: 120,
color: Colors.blue,
),
Container(
width: 120,
height: 35,
// color: Colors.red,
child: Text(_nameCategory,),
),
],
),
),
);
}
}
void redirectToEditProfile(BuildContext context) async {
await Navigator.of(context).push(PageRouteBuilder(
opaque: false,
pageBuilder: (BuildContext context, _, __) {
return (Your Redirecting Activity);
}));
}https://stackoverflow.com/questions/59953036
复制相似问题