不同屏幕的PopupMenuButton
创始人
2025-01-09 13:00:46
0

要实现不同屏幕的PopupMenuButton,可以根据屏幕的尺寸和方向设置不同的PopupMenuItem。以下是一个示例代码,演示了如何根据屏幕尺寸和方向设置不同的PopupMenuButton。

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

class DifferentScreenPopupMenuButton extends StatefulWidget {
  @override
  _DifferentScreenPopupMenuButtonState createState() =>
      _DifferentScreenPopupMenuButtonState();
}

class _DifferentScreenPopupMenuButtonState
    extends State {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Different Screen PopupMenuButton'),
      ),
      body: Center(
        child: PopupMenuButton(
          itemBuilder: (BuildContext context) {
            if (MediaQuery.of(context).size.width < 600) {
              // For small screen size
              return >[
                PopupMenuItem(
                  value: 'item1',
                  child: Text('Item 1'),
                ),
                PopupMenuItem(
                  value: 'item2',
                  child: Text('Item 2'),
                ),
                PopupMenuItem(
                  value: 'item3',
                  child: Text('Item 3'),
                ),
              ];
            } else {
              // For large screen size
              return >[
                PopupMenuItem(
                  value: 'item1',
                  child: ListTile(
                    leading: Icon(Icons.check),
                    title: Text('Item 1'),
                    onTap: () {
                      Navigator.pop(context, 'item1');
                    },
                  ),
                ),
                PopupMenuItem(
                  value: 'item2',
                  child: ListTile(
                    leading: Icon(Icons.check),
                    title: Text('Item 2'),
                    onTap: () {
                      Navigator.pop(context, 'item2');
                    },
                  ),
                ),
                PopupMenuItem(
                  value: 'item3',
                  child: ListTile(
                    leading: Icon(Icons.check),
                    title: Text('Item 3'),
                    onTap: () {
                      Navigator.pop(context, 'item3');
                    },
                  ),
                ),
              ];
            }
          },
          onSelected: (String value) {
            // Handle selected item
            print('Selected: $value');
          },
        ),
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: DifferentScreenPopupMenuButton(),
  ));
}

在上面的示例中,我们使用了MediaQuery.of(context).size.width来获取屏幕的宽度,并根据不同的宽度设置不同的PopupMenuItem。如果屏幕宽度小于600,我们使用简单的PopupMenuItem,如果屏幕宽度大于等于600,我们使用带有图标和点击事件的ListTile作为PopupMenuItem。这样就可以根据不同的屏幕尺寸和方向来定制不同的PopupMenuButton。

相关内容

热门资讯

固有有辅助"德普软件... 固有有辅助"德普软件"开挂(透视)辅助下载(介绍教程证实有挂);无需打开直接搜索微信(1367043...
原先有辅助"新天道辅... 原先有辅助"新天道辅助软件"开挂(透视)辅助神器(攻略教程有挂分享);无需打开直接搜索加薇13670...
往昔有辅助"开心泉州... 往昔有辅助"开心泉州小程序辅助器安全吗"开挂(透视)辅助下载(大神讲解有挂猫腻);无需打开直接搜索薇...
从前有开挂"中至抚州... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
素来有辅助"随意玩脚... 素来有辅助"随意玩脚本辅助工具透视"开挂(透视)辅助插件(必赢方法有挂教学);无需打开直接搜索打开薇...
起初有辅助"德扑之星... 起初有辅助"德扑之星插件"开挂(透视)辅助下载(高科技教程确实有挂);打开点击测试直接进入微信(13...
先前有辅助"浙江游戏... 先前有辅助"浙江游戏厅辅助器"开挂(透视)辅助脚本(详细教程确实有挂)这是一款可以让一直输的玩家,快...
一向有辅助"新财神辅... 一向有辅助"新财神辅助器"开挂(透视)辅助工具(详细教程有挂解密)>>您好:软件加薇13670430...
先前有辅助"开心泉州... >>您好:开心泉州免费辅助器确实是有挂的,很多玩家在这款开心泉州免费辅助器游戏中打牌都会发现很多用户...
一向有辅助"wpk透... >>您好:wpk透视辅助下载确实是有挂的,很多玩家在这款wpk透视辅助下载游戏中打牌都会发现很多用户...