【问题标题】:How to add a mark as fabourtie icon in my flutter app?如何在我的颤振应用程序中添加标记作为 fabourtie 图标?
【发布时间】:2021-11-26 20:26:08
【问题描述】:

我正在开发一个报价应用程序作为颤振的初学者。我的应用程序中有多个页面。现在我想创建一个图标按钮,它将作为用户的书签(标记为 fabourite)。所以我添加了我的应用程序中的颤振 fabourite 按钮。最初它保持白色,当我触摸它时,它变成红色,这是我想要的。但是当我移动到另一个页面并返回上一个页面(添加了 fabourite 图标的位置)按钮变成白色...我希望它保持红色,除非用户再次触摸它。我只想将它用作标记为 fabourite 的图标...我现在该怎么办?

class p1 extends StatefulWidget {
 @override
 _p1State createState() => _p1State();
  }

class _p1State extends State<p1> {
 @override
  Widget build(BuildContext context) {
   return MaterialApp(
    home: Scaffold(
        body:Stack(
       children:<Widget>[
       Image(
       image:AssetImage("Image/Chowsun1.jpg"),
        fit:BoxFit.cover,
        width: double.infinity,
        height: double.infinity,
        ),
         Align(alignment: Alignment.center,
          child: Text(' Hello world   '
              ,style: TextStyle(fontSize: 35.0,
                  color: Colors.white,
                  fontFamily: "Explora",
                  fontWeight: FontWeight.w900 ) )



      ),
         Align(
           alignment: Alignment.bottomLeft,
           child: const Text('   1 ',
             style: TextStyle(
                 fontSize: 25.0,
                 fontFamily: "MonteCarlo",
                 color: Colors.white,
                 fontWeight: FontWeight.w900),
           ),

         ),
    Align(
        alignment: Alignment.bottomCenter,
        child: FavoriteButton(
          isFavorite: true,
          iconSize: 40,
          iconDisabledColor: Colors.red,
          iconColor: Colors.white,
          // iconDisabledColor: Colors.white,
          valueChanged: (_isFavorite) {},
        )


        )])

        ),
        );
        }
        }

【问题讨论】:

  • 能否指定数据的存储方式?
  • 兄弟我是初学者...我只能说它只是存储在本地数据库中...我没有使用 firestore

标签: flutter dart


【解决方案1】:

问题是您没有将_isFavorite 的状态存储在任何地方,这就是我们使用StatefulWidget 的目的,是为了跟踪状态(并对其进行更改)

在你的类开始时,声明一个布尔值来跟踪这个值:

class _p1State extends State<p1> {
  bool _isFavorite = false;

然后在你的构建方法中:

FavoriteButton(
      isFavorite: _isFavorite,

最后,一旦您点击按钮,您需要通知您的班级该值已更改:

valueChanged: (isFav) {setState(() { _isFavorite = isFav; })},

请注意,我更改了 valueChanged 中的参数,因为我们现在正在跟踪 _isFavorite 中的值(前导下划线表示它是类上的私有范围变量。而 isFav 仅适用于valueChanged 方法,所以它实际上不需要前导下划线。

【讨论】:

  • 非常感谢,它起作用了......只是一个问题......在标志是白色之前,当我触摸时,它变成了红色......但是它被反转了......它是红色的,如果我摸它变白了……有什么办法,请指教
  • 哦,我不小心颠倒了你的默认值。代替班级顶部的bool _isFavorite = false;,输入:bool _isFavorite = true;
猜你喜欢
  • 1970-01-01
  • 2021-11-09
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 2021-04-25
  • 2020-08-03
相关资源
最近更新 更多