在同一文件外传递和调用函数

纳斯里

在这个文件中,我有这个函数,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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章