首页 > 解决方案 > 如何在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 状态,并导航到登录屏幕。

任何人请帮忙!

标签: flutterdart

解决方案


onSelected: (value) async {
  // your code
}

推荐阅读