在Flutter中调用状态类中的变量



我想在状态类中触发一个布尔变量'runBackdropBlur',如下面的代码所示。

要做到这一点,我希望能够调用方法turnOnBackdropBlur()(从另一个小部件),而这个方法反过来,当调用将改变这个变量在它的状态类使用全局键。

我一直在遵循这个教程,以实现这种情况下的一个简单的状态管理解决方案:教程

然而,我在扑动中遇到这两个错误,我无法修复…命名参数必须用花括号("{"one_answers"}")括起来。

可选参数的默认值必须为常量。
class Backdrop extends StatefulWidget {
Backdrop(key : _myKey);
GlobalKey<_BackdropState> _myKey = GlobalKey<_BackdropState>();
void turnOnBackdropBlur() {
_myKey.currentState!.runBackdropBlur = true;
}
@override
_BackdropState createState() => _BackdropState();
}
class _BackdropState extends State<Backdrop> {
bool runBackdropBlur = false;
//etc

你可以用一些技巧做任何你想做的事。您可以向所有者小部件提供方法指针,如下所示:

import 'dart:developer';
import 'package:flutter/cupertino.dart';
class Backdrop extends StatefulWidget {
final Map<String, Function> listener = new Map<String, Function>();
void setnBackdropBlurTrue() => listener.containsKey("BackdropBlurTrue")
? listener["BackdropBlurTrue"].call()
: log("BackdropBlurTrue key is null");
void setnBackdropBlurFalse() => listener.containsKey("BackdropBlurFalse")
? listener["BackdropBlurFalse"].call()
: log("BackdropBlurFalse key is null");
@override
_BackdropState createState() => _BackdropState();
}
class _BackdropState extends State<Backdrop> {
bool runBackdropBlur = false;
void setRunBackdropBlurTrue() => runBackdropBlur = true;
void setRunBackdropBlurFalse() => runBackdropBlur = false;

@override
Widget build(BuildContext context) {
return Container();
}
_BackdropState() {
widget.listener.putIfAbsent("BackdropBlurTrue", () => setRunBackdropBlurTrue);
widget.listener.putIfAbsent("BackdropBlurFalse", () => setRunBackdropBlurFalse);
}
}

最新更新