首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在颤振appBar中建立重要的“动作图标”

如何在颤振appBar中建立重要的“动作图标”
EN

Stack Overflow用户
提问于 2022-03-30 22:24:13
回答 2查看 530关注 0票数 0

我是一个新的颤振学习者,当我为安卓应用程序创建我的appBar时,我遇到了一个问题。在appBar的操作区域应该有一个“照相机手电筒”图标的按钮,用户可以点击这个图标从弹出菜单中选择手电筒选项( on /off/auto),我完成了这个步骤。

但是,如果我希望appBar的操作区域上的手电筒图标随用户选择的变化而改变(例如,如果用户选择自动,那么appBar图标应该显示一个“自动手电筒”),我该如何实现呢?

提前谢谢你。

我曾尝试在appBar操作图标小部件中使用"if“,但失败了。

现在我在appBar.dart中的代码是

代码语言:javascript
复制
`Icon flashIcon = Icon(Icons.flash_auto);
FlashMode flashstate;

setIcon([Icon Function() param0]) {
  if (flashstate == FlashMode.off) {
    setIcon(() => flashIcon = Icon(Icons.flash_off));
  } else if (flashstate == FlashMode.torch) {
    flashIcon = Icon(Icons.flash_on);
  } else if (flashstate == FlashMode.always) {
    flashIcon = Icon(Icons.flash_on);
  } else {
    flashIcon = Icon(Icons.flash_auto);
  }
}`

“动作”按钮代码是:

代码语言:javascript
复制
PopupMenuButton<String>(
              icon: setIcon(),

              onSelected: widget.isFlash,
              itemBuilder: (context) {
                List<PopupMenuEntry<String>> menuEntries2 = [
                  const PopupMenuItem<String>(
                    child: Icon(
                      Icons.flash_auto,
                      color: Colors.black,
                    ),
                    value: 'auto',
                  ),
                  const PopupMenuItem<String>(
                    child: Icon(Icons.flash_off, color: Colors.black),
                    value: 'off',
                  ),
                  const PopupMenuItem<String>(
                    child: Icon(Icons.flash_on, color: Colors.black),
                    value: 'torch',
                  ),
                ];
                return menuEntries2;
              },
            ),`    

但是问题仍然是resolved...The图标没有变成三个点,如果我选择了弹出菜单中的手电筒状态,没什么变化。在这里输入图像描述

在这里输入图像描述

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-31 07:50:23

尝试下面的代码,您就得到了准确的输出,这就是您所描述的

输出:-

代码:-

代码语言:javascript
复制
import 'package:flutter/material.dart';

class OptionMenuExample extends StatefulWidget {
  const OptionMenuExample({Key? key}) : super(key: key);

  @override
  State<OptionMenuExample> createState() => _OptionMenuExampleState();
}

class _OptionMenuExampleState extends State<OptionMenuExample> {
  int selectedValue = 0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Appbar"),
        actions: [
          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.black),
            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,
              ),
            ],
          ),
          const SizedBox(width: 16.0)
        ],
      ),
    );
  }
}
票数 1
EN

Stack Overflow用户

发布于 2022-03-30 23:26:19

既然你没有发布任何代码,下面是我的建议。您可以编写如下代码:

代码语言:javascript
复制
Icon icon = Icon(Icons./*icon name*/);

然后创建一个函数,如:

代码语言:javascript
复制
setIcon() {
   //here you use the value of your popup(or whatever you are using to let the user choose the state of flash) to change icon
   //example 
   if(value == **condition**) {
       setState(() => icon = /*new icon*/);
   } else {...} //and so on for all conditions 
   //or use a switch case if you prefer 
}

现在,在弹出(或其他)的回调中调用函数,并在icon按钮中使用变量appBar。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71684805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档