Flutter 将函数传递给列表视图生成器的项目
Flutter pass functions to items for list view builder
我想做的是我有一个带有图标和东西的 ListView,它们就像应用程序中最常用功能的小快捷方式。
List _shortcuts = [
{
'name': 'HORN',
'icon': Icons.circle_outlined,
'selection': false,
'func': (String dummy) {
// do something
print('I did it!' + dummy);
},
},
].toList();
所以我的问题是...是否可以在 Listviews 生成器方法中调用每个项目的唯一函数?
类似于 _shortcuts[i]['func']('wow')
?
我认为这应该在 php 中完成。 Dart 做不到。
void main() {
List<Map<String, dynamic>> _short = [
{
'name': 'HORN',
'icon': "Icons.circle_outlined",
'selection': false,
'func': (String dummy) {
print('I did it! \t' + dummy);
},
}
];
_short[0]["func"]("hello");
}
希望对您有所帮助。
您应该创建一个 class,它将在您的 _shortcuts
列表中使用。请参阅以下示例:
// The ShortCut class.
class ShortCut {
final String name;
final IconData icon;
final bool selection;
final void Function(String) func;
const ShortCut({
required this.name,
required this.icon,
required this.selection,
required this.func,
});
}
此 class 可以在小部件中使用,并且可以从 ListView
小部件的构建器方法中访问该函数,如下所示:
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
/// The is your list with custom shortcuts.
final _shortCuts = <ShortCut>[
ShortCut(
name: 'HORN',
icon: Icons.circle_outlined,
selection: false,
func: (String dummy) {
// do something
print('I did it!' + dummy);
},
),
];
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: _shortCuts.length,
itemBuilder: (context, index) {
final _shortCut = _shortCuts[index];
// Call the function here.
_shortCut.func('dummy');
return Container();
},
);
}
}
希望这就是您要找的!
我想做的是我有一个带有图标和东西的 ListView,它们就像应用程序中最常用功能的小快捷方式。
List _shortcuts = [
{
'name': 'HORN',
'icon': Icons.circle_outlined,
'selection': false,
'func': (String dummy) {
// do something
print('I did it!' + dummy);
},
},
].toList();
所以我的问题是...是否可以在 Listviews 生成器方法中调用每个项目的唯一函数?
类似于 _shortcuts[i]['func']('wow')
?
我认为这应该在 php 中完成。 Dart 做不到。
void main() {
List<Map<String, dynamic>> _short = [
{
'name': 'HORN',
'icon': "Icons.circle_outlined",
'selection': false,
'func': (String dummy) {
print('I did it! \t' + dummy);
},
}
];
_short[0]["func"]("hello");
}
希望对您有所帮助。
您应该创建一个 class,它将在您的 _shortcuts
列表中使用。请参阅以下示例:
// The ShortCut class.
class ShortCut {
final String name;
final IconData icon;
final bool selection;
final void Function(String) func;
const ShortCut({
required this.name,
required this.icon,
required this.selection,
required this.func,
});
}
此 class 可以在小部件中使用,并且可以从 ListView
小部件的构建器方法中访问该函数,如下所示:
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
/// The is your list with custom shortcuts.
final _shortCuts = <ShortCut>[
ShortCut(
name: 'HORN',
icon: Icons.circle_outlined,
selection: false,
func: (String dummy) {
// do something
print('I did it!' + dummy);
},
),
];
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: _shortCuts.length,
itemBuilder: (context, index) {
final _shortCut = _shortCuts[index];
// Call the function here.
_shortCut.func('dummy');
return Container();
},
);
}
}
希望这就是您要找的!