如何将一个函数移动到一个单独的方法中?
How to move a function into a separate method?
我有一个在单击 ListTile 时调用的函数。我需要将它移到一个单独的方法中。该函数在 onTap 中。我想把它放在构建之外的一个单独的方法中。我该怎么做?
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Consumer<EventListProvider>(
builder: (context, listModel, child) {
return ListView.builder(
itemCount: listModel.eventList.length,
itemBuilder: (context, index) {
return Container(
child: ListTile(
title: Text(
listModel.eventList[index].title,
style: const TextStyle(
color: Colors.black87,
fontWeight: FontWeight.bold,
),
),
subtitle: Text(
listModel.eventList[index].detail,
style: const TextStyle(
color: Colors.black45,
fontWeight: FontWeight.bold,
),
),
onTap: () {
final event =
listModel.getEvent(listModel.eventList[index].id);
if (event != null) {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return EditEventBottomSheet(event: event);
},
);
}
}),
);
},
);
},
),
floatingActionButton: FloatingActionButton(
onPressed: _addEvent,
child: const Icon(Icons.add),
),
);
}
}
构建之外的方法:
_onTap(int index, BuildContext context, ??? listModel) {
final event =
listModel.getEvent(listModel.eventList[index].id);
if (event != null) {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return EditEventBottomSheet(event: event);
},
);
}
在构建方法中:
child: ListTile(
// ...
onTap: () => _onTap(index, context, listmodel),
您需要将 ???
替换为 listmodel
变量的实际类型,我在您的代码中看不到它。
我有一个在单击 ListTile 时调用的函数。我需要将它移到一个单独的方法中。该函数在 onTap 中。我想把它放在构建之外的一个单独的方法中。我该怎么做?
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Consumer<EventListProvider>(
builder: (context, listModel, child) {
return ListView.builder(
itemCount: listModel.eventList.length,
itemBuilder: (context, index) {
return Container(
child: ListTile(
title: Text(
listModel.eventList[index].title,
style: const TextStyle(
color: Colors.black87,
fontWeight: FontWeight.bold,
),
),
subtitle: Text(
listModel.eventList[index].detail,
style: const TextStyle(
color: Colors.black45,
fontWeight: FontWeight.bold,
),
),
onTap: () {
final event =
listModel.getEvent(listModel.eventList[index].id);
if (event != null) {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return EditEventBottomSheet(event: event);
},
);
}
}),
);
},
);
},
),
floatingActionButton: FloatingActionButton(
onPressed: _addEvent,
child: const Icon(Icons.add),
),
);
}
}
构建之外的方法:
_onTap(int index, BuildContext context, ??? listModel) {
final event =
listModel.getEvent(listModel.eventList[index].id);
if (event != null) {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return EditEventBottomSheet(event: event);
},
);
}
在构建方法中:
child: ListTile(
// ...
onTap: () => _onTap(index, context, listmodel),
您需要将 ???
替换为 listmodel
变量的实际类型,我在您的代码中看不到它。