我正在尝试在appBar上构建一个带状态的“闪光灯按钮”,点击此按钮会弹出popupmenu,用户可以在弹出菜单中点击“开启/关闭/常亮”三种状态,appBar上的按钮会根据用户选择的状态改变样式。
目前此功能已在Flutter框架下的appBar.dart文件成功实现。代码如下:
int selectedValue = 1;
PopupMenuButton(
initialValue: selectedValue,
onSelected: (int value) => setState(() {
selectedValue = value;
}),
child: Icon(
selectedValue == 1
? Icons.flash_off
: selectedValue == 2
? Icons.flash_auto
: Icons.flash_on,
color: Colors.white),
//popupmenu content
itemBuilder: (context) => const [
PopupMenuItem(
child: Icon(Icons.flash_on, color: Colors.black),
value: 0,
),
PopupMenuItem(
child: Icon(Icons.flash_off, color: Colors.black),
value: 1,
),
PopupMenuItem(
child: Icon(Icons.flash_auto, color: Colors.black),
value: 2,
),
],
),
但同时,希望设备的闪光灯工作状态能够根据用户的选项而工作,此方法我写在main.dart里。
flashStatus(flashMode) async {
setState(() {
if (flashMode == 'auto') {
_flashMode = FlashMode.auto;
} else if (flashMode == 'off') {
_flashMode = FlashMode.off;
} else {
_flashMode = FlashMode.torch;
}
});
print(flashMode);
await cameraController.setFlashMode(_flashMode);
}
现在想请教各位大佬,如何能够把main文件的flashStatus方法(控制设备闪光灯工作状态)与appBar文件的icon链接,使得用户在popupmenu中选择的时候,不仅appBar的图标会变,实际设备的闪光灯也能对应工作?
先在这里谢谢各位大神的时候和帮助。
可以尝试使用Provider来进行跨组件状态管理。