带有条件的 Flutter 显示弹出窗口

岩石

我正在尝试显示名为“年龄限制”的弹出窗口。我有一个变量ageRestriction它需要一个字符串。我只想在用户单击基于ageRestriction值的按钮时显示一次弹出窗口,例如:如果ageRestriction = "18" 显示一次,如果稍后它更改为 "20" 再次显示它,所以当 "18" 再次出现时想出现。我正在尝试将其保存到共享首选项列表,然后检查列表中是否存在该值。但它没有用

这是我迄今为止尝试过的代码

// Defining variables
String ageRestriction;
List<String> storedAges;


//Button with pop-up and conditions
     InkWell(
            onTap: () {
       onTap: () {
              if(widget.ageRestriction != null && widget.ageRestriction.isNotEmpty){
                storedAges.contains(widget.ageRestriction) ? widget.onPressed():
                AwesomeDialog(
                  popContext: false,
                  context: context,
                  dialogType: DialogType.WARNING,
                  animType: AnimType.TOPSLIDE,
                  btnOkText: S.of(context).yes,
                  body:  Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: [
                      Text(S.of(context).are_you_18(widget.ageRestriction),style:  TextStyle(
                          fontSize: 16,
                          fontFamily: "Montserrat",
                          fontWeight: FontWeight.bold),),
                    ],
                  ),
                  btnOkOnPress: () async{
                    setState(() {
                      SharedPreferencesHelper().addToAgeList(widget.ageRestriction);
                      storedAges = SharedPreferencesHelper().getAgeList();
                      print("Widget stored" + storedAges.length.toString());
                    });
                    ///Working Code
                   // SharedPreferencesHelper().setAgeData = widget.ageRestriction;
                    widget.onPressed();
                    Navigator.of(context).pop();
                  },
                  btnCancelOnPress: () {
                  //  Navigator.pop(context);
                  },
                  btnCancelText: S.current.no,
                  btnOkColor: Theme.of(context).accentColor,
                  btnCancelColor: Color(0xFF084457).withOpacity(0.9),
                ).show();
                setState(() {
                  saveAgeData = widget.ageRestriction;
                });
              }else {
                widget.onPressed();
              }
            },
           }),




//Shared preference functions
  Future<bool> setAgeList(String age) async {
    return await _prefs.setStringList("AgeList", [age]);
  }

  Future<bool> addToAgeList(String age) async {
    return await _prefs.setStringList("AgeList", _prefs.getStringList("AgeList")..add(age));
  }

  List<String> getAgeList() {
    return _prefs.getStringList("AgeList");
  }
穆罕默德·亚兹

你不应该使用 setAgeList 然后,如果列表为空,你必须得到空列表

替换 getAgeList;

var list = _prefs.getStringList("AgeList")??<String>[];
list.add(age);
return await _prefs.setStringList("AgeList", list);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Flutter:有条件地显示BottomNavigationBar

Flutter:有条件的底部导航栏,用于根据if条件显示页面

带有条件的Pyspark窗口功能

带有条件显示HTML属性的小胡子?

在Jekyll中显示带有条件的JSON数据

在Flutter中有条件地显示/隐藏图块中的复选框

Flutter - 当有多个弹出窗口时如何使弹出窗口消失?

Flutter Firestore会在地图字段上获取带有条件的文档

带有条件小部件的Flutter Hero交易容器

Flutter:如何从现有的窗口小部件正确创建自定义窗口小部件并使用其属性(有时有条件)

如何有条件地显示带有tailwindcss的错误消息?

突出显示有条件的行

没有弹出窗口显示的弹出窗口散焦 - Kivy - Python

如何仅在MaterialUI自动完成中显示带有条件的NoOptionsText

使用带有条件的ng-repeat一次显示文本

如何在数组中显示/获取带有条件的数据?

如何隐藏和显示带有条件的输入框?

在下拉菜单中显示带有条件的文本

Flutter:有条件地在列表中嵌套 Map

Flutter:如何有条件地添加小部件

有条件的颜色变化 Dart Flutter

Flutter PopupMenuButton - 如何有条件地禁用它

Flutter ListTile (tileColor) 有条件地

显示带有条件的嵌套数据:如何不显示产品颜色不符合条件的数据?

防止 MacOS 在 Flutter 中显示重音选择弹出窗口

Appcrash弹出窗口没有显示?

我的Paystack付款网关弹出窗口没有显示/弹出

有条件弹出Html警告框

如何添加有条件行弹出的传单?