在这个文件中,我有这个函数,setFilters
但我需要在 FilterScreen(另一个有状态的小部件)中使用这个函数,所以我将它传递到路由中FiltersScreen(setFilters)
这是 main.dart:
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Map<String, bool> _filters = {
'gluten': false,
'lactose': false,
'vegan': false,
'vegetarian': false,
};
void setFilters(Map<String, bool> _filterData) {
setState(() {
_filters = _filterData;
});
}
.
.
.
.
.
routes: {
TabsScreen.routeName: (context) => TabsScreen(),
CategoryMealScreen.routeName: (context) => CategoryMealScreen(),
MealDetailsScreen.routeName: (context) => MealDetailsScreen(),
FiltersScreen.routeName: (context) => FiltersScreen(setFilters),
},
这是第二个文件。我收到了这个函数x
,我需要在 IconButton 中调用它。我试过Widget.x
但没有奏效。
import 'package:flutter/material.dart';
import '../wedgits/main_drawer.dart';
class FiltersScreen extends StatefulWidget {
static const routeName = "filters";
final Function x;
FiltersScreen(this.x);
@override
_FiltersScreenState createState() => _FiltersScreenState();
}
class _FiltersScreenState extends State<FiltersScreen> {
bool _glutenFree = false;
bool _lactoseFree = false;
bool _viegan = false;
bool _vegetarian = false;
Widget buildSwitchListTile(
String title,
String subtitle,
bool currentvalue,
Function updateValue,
) {
return SwitchListTile(
title: Text(title),
subtitle: Text(subtitle),
value: currentvalue,
onChanged: updateValue);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Your Filters"),
actions: [
IconButton(
icon: Icon(Icons.save),
onPressed: () {} // here I want to call the function x
),
],
),
您需要像这样使用 onPressed:
onPressed: () => widget.x()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句