flutter - 如何在flutter PopupMenuButton中调用异步函数?
问题描述
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
choiceAction(BuildContext context)async{
SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.setBool("isLogin", false);
Navigator.pushNamed(context, '/login');
}
Widget aapBarSection(String title, Color color, BuildContext context){
return AppBar(
title: Text(title, style:TextStyle(fontFamily: 'Poppins-Regular'), ),
centerTitle: true,
backgroundColor: color,
actions: [
PopupMenuButton<String>(
onSelected: choiceAction,
offset: Offset.zero,
itemBuilder: (BuildContext context) {
return <PopupMenuEntry<String>>[
PopupMenuItem(
child: Row(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Icon(Icons.logout, color: Colors.black,),
),
Text('Logout'),
],
),
value: 'Logout',
)
];
},
)
],
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: (){
exit(0);
},
),
);
}
想在 onSelected 属性中调用异步函数,我该怎么做?因为我想在应用程序栏中添加一个注销选项,并且通过调用函数单击注销时,它应该更改共享首选项中的 is_login 状态,并导航到登录屏幕。
任何人请帮忙!
解决方案
onSelected: (value) async {
// your code
}
推荐阅读
- sql - SQL Server 中的 CONCAT 与 CASE WHEN 故障排除
- django - 更改 CreateView 中的模型取决于 django 中的用户
- reactjs - 在 React 子组件中触发多个 POST 请求
- python - Localstack 使用 sqlalchemy 过滤器查询运行 aws lambda (python) - 导致异常
- javascript - 使用vue.js的时候,在v-model变量声明后插入<>字符会出现不输出字符的问题
- python - 用python列表替换数据框
- java - 关于if语句的任务问题
- java - 任务 bootRun 执行失败
- vue.js - 如何将 VueJS 中的属性对象传递给组件进行修改?
- python - 如果 QGraphicsItem.ItemIsMovable 更新 QGraphicsScene.addItem 中的项目位置