您的位置:首页 > 房产 > 家装 > 广州品牌包装设计_西安市住房和城乡建设局门户网站_站长统计推荐_广告营销方式有哪几种

广州品牌包装设计_西安市住房和城乡建设局门户网站_站长统计推荐_广告营销方式有哪几种

2025/4/19 7:05:41 来源:https://blog.csdn.net/dccose/article/details/147057625  浏览:    关键词:广州品牌包装设计_西安市住房和城乡建设局门户网站_站长统计推荐_广告营销方式有哪几种
广州品牌包装设计_西安市住房和城乡建设局门户网站_站长统计推荐_广告营销方式有哪几种

flutter bitsdojo_window 插件的使用

  • bitsdojo_window

依赖安装

  • bitsdojo_window: 0.1.6
  • flutter pub get
    在这里插入图片描述

在主入口进行配置 main.dart

  • 如果只是配置窗口大小那只需要 配置 doWhenWindowReady(); 即可
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:bitsdojo_window/bitsdojo_window.dart'; //窗口插件
import './window_buttons.dart';void main() async {// 在macOS必须配置当前代码WidgetsFlutterBinding.ensureInitialized();// WidgetsFlutterBinding.ensureInitialized(); 简单说就是主要处理原生flutter通信的,如果我们需要再main() 中做一些初始化操作就需要加上他 (windows上建议也加上)// 应用主页面runApp(const MyApp());// 配置窗口大小 bitsdojo_window 插件使用配置doWhenWindowReady(() {final win = appWindow;const initialSize = Size(800, 600); //配置尺寸win.minSize = initialSize; //软件的最小窗口win.size = initialSize; //默认的窗口大小// win.maxSize = const Size(900, 600); //最大窗口 一般不配置win.alignment = Alignment.center; //窗口的位置 启动的时候默认在什么方位win.title = 'Hello World';win.show(); //显示});
}class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(debugShowCheckedModeBanner: false,title: 'Flutter Demo',theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: const MyHomePage(title: 'Flutter Demo Home Page'),);}
}class MyHomePage extends StatefulWidget {const MyHomePage({super.key, required this.title});final String title;@overrideState<MyHomePage> createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {int _counter = 0;void _incrementCounter() {setState(() {_counter++;});}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(toolbarHeight: 30, //设置顶部导航条高度backgroundColor: Theme.of(context).colorScheme.inversePrimary,// 配置可拖拽窗口区域title: WindowTitleBarBox(child: MoveWindow(),),// 判断是否为 windows 环境 在macOS环境中无法生效 //import 'dart:io';actions: [if (Platform.isWindows == true) const WindowButtons()],),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[const Text('You have pushed the button this many times:',),Text('$_counter',style: Theme.of(context).textTheme.headlineMedium,),],),),floatingActionButton: FloatingActionButton(onPressed: _incrementCounter,tooltip: 'Increment',child: const Icon(Icons.add),),);}
}

修改应用顶部导航条

  • windows 中进行配置 \windows\runner\main.cpp 当前文件中添加如下代码

    // bitsdojo_window 插件使用配置
    #include <bitsdojo_window_windows/bitsdojo_window_plugin.h>
    auto bdw = bitsdojo_window_configure(BDW_CUSTOM_FRAME | BDW_HIDE_ON_STARTUP);
    

    在这里插入图片描述

  • macOS中进行配置 macos\runner\MainFlutterWindow.swift 当前文件中添加如下代码

    import Cocoa
    import FlutterMacOS
    import bitsdojo_window_macosclass MainFlutterWindow: BitsdojoWindow  {override func bitsdojo_window_configure() -> UInt {
    // return BDW_CUSTOM_FRAME | BDW_HIDE_ON_STARTUP 
    //去除BDW_HIDE_ON_STARTUP 否则打开应用的时候为隐藏状态
    return BDW_CUSTOM_FRAME
    }override func awakeFromNib() {
    let flutterViewController = FlutterViewController()
    let windowFrame = self.frame
    self.contentViewController = flutterViewController
    self.setFrame(windowFrame, display: true)RegisterGeneratedPlugins(registry: flutterViewController)super.awakeFromNib()
    }
    }

    在这里插入图片描述

在主入口进行配置 window_buttons.dart

// 配置windows应用窗口按钮
import 'package:flutter/material.dart';
import 'package:bitsdojo_window/bitsdojo_window.dart';
import 'package:flutter_multiterminal_demo/main%20copy%203.dart'; //窗口插件// 快速生成 statefulWclass WindowButtons extends StatefulWidget {const WindowButtons({super.key});@overrideState<WindowButtons> createState() => _WindowButtonsState();
}class _WindowButtonsState extends State<WindowButtons> {// final buttonColors = WindowButtonColors(//     iconNormal: const Color(0xFF805306),//     mouseOver: const Color(0xFFF6A00C),//     mouseDown: const Color(0xFF805306),//     iconMouseOver: const Color(0xFF805306),//     iconMouseDown: const Color(0xFFFFD500));final buttonColors = WindowButtonColors(// normal: Colors.grey[600],           //普通状态图标背景的颜色mouseOver: Colors.grey[400],        //鼠标到图标时的背景颜色mouseDown: Colors.grey[400],        //鼠标按下时的背景色iconNormal: Colors.grey[600],       //普通状态下按钮的颜色iconMouseOver: Colors.grey[600],    //鼠标移动到按钮图标时的图标颜色iconMouseDown: Colors.grey[600]);   //鼠标按下时按钮图标的颜色final closeButtonColors = WindowButtonColors(mouseOver: const Color(0xFFD32F2F),mouseDown: const Color(0xFFB71C1C),iconNormal: const Color(0xFF805306),iconMouseOver: Colors.white);maximizeOrRestore() {appWindow.maximizeOrRestore();}@overrideWidget build(BuildContext context) {return Row(children: [// MouseRegion 鼠标放上去时 鼠标形状发生变化// MouseRegion(//   cursor: SystemMouseCursors.click,//   child: MinimizeWindowButton(//     colors: buttonColors,//   ),// ),MinimizeWindowButton(),MouseRegion(cursor: SystemMouseCursors.click,child: appWindow.isMaximized? RestoreWindowButton(colors: buttonColors,// onPressed 按压事件onPressed: maximizeOrRestore,): MaximizeWindowButton(colors: buttonColors,onPressed: maximizeOrRestore,)),MouseRegion(cursor: SystemMouseCursors.click,child: CloseWindowButton(colors: closeButtonColors,),),],);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com