Flutter PC桌面端 控制应用尺寸是否允许放大缩小

这篇具有很好参考价值的文章主要介绍了Flutter PC桌面端 控制应用尺寸是否允许放大缩小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、需求

桌面端中,登录、注册、找回密码页面不允许用户手动放大缩小,主页面允许

二、插件

window_manager

使用教程请参照这篇博客:Flutter桌面端开发——window_manager插件的使用

题外话:
之前使用的是bitsdojo_window插件,使用方法请参照博客 bitsdojo_window
这个插件中,如果想要用户不允许操作应用页面大小的话,需要设置 最大大小 等于 最小大小
(appWindow.maxSize = appWindow.minSize)。设置完成后,确实可以达到登录等页面的禁止用户拉伸页面的效果,但是,主页面也变成了不可拉伸(在创建第一个页面之后,这些设置好的属性是一直会被沿用,除非后续页面初始化的时候,覆盖原有属性),所以,如果想要主页面可以控制大小,应该重新设置maxSize,这时的maxSize应为电脑屏幕大小,但是flutter获取不到电脑的物理属性,所以无解,改用window_manager

三、使用

1、创建一个文件专门用于window_manager操作

class WindowUtil {
  static void init({required double width, required double height}) async {
    WindowOptions windowOptions = WindowOptions(
      size: Size(width, height),
      minimumSize: Size(width, height),
      center: true,
      backgroundColor: Colors.transparent,
      skipTaskbar: false,
      titleBarStyle: TitleBarStyle.hidden,
    );
    windowManager.waitUntilReadyToShow(windowOptions, () async {
      await windowManager.show();
      await windowManager.focus();
     });
   }
  }

2、main中初始化

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

3、禁止拖动

创建方法 setResizable

///设置用户是否可以手动放大缩小
  static void setResizable(bool reSize) {
    windowManager.setResizable(reSize);
  }

在不允许用户改变应用大小的页面的initState方法中


  void initState() {
    super.initState();
    ///设置不可以手动放大缩小
    WindowUtil.setResizable(false);
  }

在允许用户改变应用大小的页面的initState方法中


  void initState() {
    super.initState();
    ///设置不可以手动放大缩小
    WindowUtil.setResizable(true);
  }

这样,就可以设置不同页面不同的拉伸效果了

四、设置顶层三个按钮

Flutter PC桌面端 控制应用尺寸是否允许放大缩小文章来源地址https://www.toymoban.com/news/detail-419601.html

 ///关闭窗口
  static void close() async {
    await windowManager.destroy();
  }

  ///缩小窗口
  static void hide() async {
    await windowManager.minimize();
  }

  ///放大窗口
  static void maximize() async {
    if (await windowManager.isMaximized()) {
      await windowManager.unmaximize();
    } else {
      await windowManager.maximize();
    }
  }
///设置顶部按钮
class ControllerButton extends StatelessWidget {
  final int funType; //响应事件
  final Color normal; //普通状态图标背景的颜色
  final Color mouseOver; //鼠标到图标时的背景色
  final String icons; //图标
  final Color iconColor; //图标颜色
  const ControllerButton(
      {super.key,
      this.normal = Colors.transparent,
      this.mouseOver = Colors.black12,
      this.iconColor = Colors.black,
      required this.icons,
      required this.funType});

  ///判断顶部按钮使用的是哪种方法
  static Map<int, void Function()?> defaultMethod = {
    1: () {
      WindowUtil.hide();
    }, //隐藏窗口
    2: () {
      WindowUtil.maximize();
    }, //放大窗口
    3: () {
      WindowUtil.close();
    }, //关闭窗口
  };

  
  Widget build(BuildContext context) {
    return Container(
        width: 40,
        margin: const EdgeInsets.only(right: 5),
        child: ElevatedButton(
          onPressed: defaultMethod[funType],
          style: ButtonStyle(

              ///不做任何操作时的背景颜色
              backgroundColor: MaterialStateProperty.all(normal),

              ///鼠标悬停的时候背景颜色
              overlayColor: MaterialStateProperty.all(mouseOver),

              /// 阴影值
              elevation: MaterialStateProperty.all(0),

              ///阴影的颜色
              shadowColor: MaterialStateProperty.all(Colors.transparent),

              ///去掉水波纹效果
              splashFactory: NoSplash.splashFactory,

              ///内边距
              padding: const MaterialStatePropertyAll(EdgeInsets.all(0))),
              
              ///这三个按钮我是用图片来展示的,所以用的image,也可以使用icon等
          child: Image(
            image: AssetImage(
              icons,
            ),
            color: iconColor,
          ),
        ));
  }
}

到了这里,关于Flutter PC桌面端 控制应用尺寸是否允许放大缩小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter桌面应用程序定义系统托盘Tray

    系统托盘 :系统托盘是一种用户界面元素,通常出现在操作系统的任务栏或桌面顶部。它是一个水平的狭长区域,用于显示各种图标和通知,以提供快速访问和操作特定应用程序或系统功能。系统托盘通常包含操作系统或第三方应用程序的图标,这些图标可以显示有关应用程

    2024年02月04日
    浏览(51)
  • Flutter笔记:桌面应用 窗口定制库 bitsdojo_window

    Flutter笔记 桌面应用窗口管理库 bitsdojo_window 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/134464678 高级:多窗口管理,请跳转到:《Flutter桌面端应用多窗口管理》,地址:https://jclee95.blog.csdn.net

    2024年02月01日
    浏览(37)
  • C++/Qt获取屏幕尺寸和放大比例

    直接上代码 屏幕放大倍数 100% 125% 150% 200%,对应的dpiVal值为:96、 120、 144 、192。 即上面变量dotPix1、dotPix2、dotPix3、dotPix4获取的值都是96 120 144 192其中的一个值。 函数介绍 1、logicalDotsPerInchX : const qreal This property holds the number of logical dots or pixels per inch in the horizontal direction T

    2023年04月24日
    浏览(43)
  • [桌面运维]PC常用的视频接口,显示器VGA、DVI、HDMI、DP、USB-C接口的认识和应用

    ⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 🙉联系作者🙈by QQ:813942269🐧 🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事

    2024年02月07日
    浏览(47)
  • flutter实战(01)windows桌面版 修改应用logo、名称、显示位置、显示大小

    说明:该系列文章主要为flutter在windows桌面平台实战中遇到的一些坑。 只需要在flutter项目/windows/runner/resources目录下替换原来的应用图标 app_icon.ico即可。 修改flutter项目/windows/runner/main.cpp 文件,在函数wWinMain中修改,代码如下: 说明:如果中文显示乱码,那么就使用notpad++编

    2024年01月25日
    浏览(84)
  • Halcon不改变目标大小尺寸及坐标,放大图像或区域

    如果需要检测一张图像中很细小的物体,计算机可能可以观察到,但人的肉眼很难判别。这时候就需要放大图像中目标所在区域进行观测,放大观察可能会导致图像被放大,目标相对原始图像的坐标大小信息会被改变。如下,分割图中目标所在区域进行放大显示,该操作会改

    2024年02月09日
    浏览(34)
  • (响应式PC端媒体查询)电脑屏幕分辨率尺寸大全

    PC端 按屏幕宽度大小排序(主流的用橙色标明) 分辨率   比例 | 设备尺寸 1024*500 (8.9寸) 1024*768 (比例4:3  | 10.4寸、12.1寸、14.1寸、15寸; ) 1280*800(16:10  |15.4寸) 1280*1024(比例:5:4  | 14.1寸、15.0寸) 1280*854(比例:15:10 | 15.2) 1366*768 (比例:16:9 | 不常见) 1440*900 (

    2024年02月11日
    浏览(36)
  • 防火墙是否能够识别和控制HTTP/HTTPS流量中的应用层攻击?

    网络世界中,“安全”是一个永恒的话题。为了保障企业数据的安全、用户隐私的保护以及应用程序的稳定运行, 防火墙起着至关重要的作用。防火墙能够识别并控制 HTTP 和 HTTPS 流量的应用层攻击(如 SQL 注入和跨站脚本攻击),从而帮助企业和个人应对不断变化的威胁环境

    2024年02月21日
    浏览(42)
  • windows开启远程桌面,防火墙拦截:只允许特定IP远程

    1、进入设置----系统----远程桌面----开启远程桌面  2、进入控制面板----系统和安全----Windows Defender 防火墙----开启防火墙----右上角 高级设置----入站规则----找到端口3389(3389为远程端口)----作用域----远程IP上添加允许访问的IP  3、配置完毕

    2024年02月13日
    浏览(44)
  • windows配置成远程桌面连接服务器,允许多个同一用户同时登录

    要将Windows配置为远程桌面连接服务器并允许多个相同用户同时登录,请按照以下步骤操作: 在Windows服务器上打开“组策略编辑器”(gpedit.msc)。 转到“计算机配置”“管理模板”“Windows组件”“远程桌面服务”“远程桌面会话主机”“连接”。 找到“限制每个用户只能有

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包