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

Flutter 带有条件的颤振显示弹出窗口,flutter,popup,sharedpreferences,Flutter,Popup,Sharedpreferences,我正在尝试显示名为“年龄限制”的弹出窗口。我有一个变量ageRestriction,它接受一个字符串。我只想在用户根据ageRestriction的值单击按钮时显示一次弹出窗口ex:If ageRestriction=“18”显示一次,如果以后它变为“20”,则再次显示它,因此当“18”再次出现时,它希望显示出来。 我试图将其保存到共享pref列表,然后检查列表中是否存在该值。但它不起作用 这是我到目前为止尝试过的代码 // Defining variables String ageRestri

我正在尝试显示名为“年龄限制”的弹出窗口。我有一个变量ageRestriction,它接受一个字符串。我只想在用户根据ageRestriction的值单击按钮时显示一次弹出窗口ex:If ageRestriction=“18”显示一次,如果以后它变为“20”,则再次显示它,因此当“18”再次出现时,它希望显示出来。 我试图将其保存到共享pref列表,然后检查列表中是否存在该值。但它不起作用

这是我到目前为止尝试过的代码

// 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");
  }
//定义变量
字符串限制;
列出仓库;
//带有弹出窗口和条件的按钮
墨水池(
onTap:(){
onTap:(){
if(widget.ageRestriction!=null&&widget.ageRestriction.isNotEmpty){
storedAges.contains(widget.ageRestriction)?widget.onPressed()
令人敬畏的对话(
popContext:false,
上下文:上下文,
dialogType:dialogType.WARNING,
animType:animType.TOPSLIDE,
是的,
正文:专栏(
mainAxisAlignment:mainAxisAlignment.center,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
Text(S.of(context.are_you_18(widget.ageRestriction))样式:TextStyle(
尺寸:16,
fontFamily:“蒙特塞拉特”,
fontWeight:fontWeight.bold),
],
),
btnOkOnPress:()异步{
设置状态(){
SharedReferenceHelper().addToAgeList(widget.ageRestriction);
storedAges=SharedReferencesHelper().getAgeList();
打印(“小部件存储”+storedAges.length.toString());
});
///工作代码
//SharedPreferenceHelper().setAgeData=widget.ageRestriction;
onPressed();
Navigator.of(context.pop();
},
BTNCELONPRESS:(){
//Navigator.pop(上下文);
},
btnCancelText:S.current.no,
btnOkColor:Theme.of(context).accentColor,
btnCancelColor:颜色(0xFF084457)。不透明度(0.9),
).show();
设置状态(){
saveAgeData=widget.ageRestriction;
});
}否则{
onPressed();
}
},
}),
//共享偏好函数
Future setAgeList(字符串年龄)异步{
return wait_prefs.setStringList(“年龄列表,[age]);
}
Future addToAgeList(字符串年龄)异步{
return wait _prefs.setStringList(“AgeList”)、_prefs.getStringList(“AgeList”)…add(age));
}
List getAgeList(){
返回_prefs.getStringList(“AgeList”);
}

您不应该使用setAgeList,然后, 如果列表为空,则必须获取空列表

替换getAgeList

var list = _prefs.getStringList("AgeList")??<String>[];
list.add(age);
return await _prefs.setStringList("AgeList", list);
var list=_prefs.getStringList(“AgeList”)??[];
增加(年龄);
return wait _prefs.setStringList(“年龄列表”,列表);