Flutter桌面应用实现只启动一次(单实例)
简介很多时候我们只希望我们的应用只能启动一次,本文主要介绍下Flutter的windows桌面端如何实现只启动一次的方法。
最先看网上说只启动一次需要修改C++代码,参考文档如下:
Run only single instance of flutter desktop application
代码内容如下:
HANDLE hMutexHandle=CreateMutex(NULL, TRUE, L"my.mutex.name");
HWND handle=FindWindowA(NULL, "Test Application");
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
WINDOWPLACEMENT place = { sizeof(WINDOWPLACEMENT) };
GetWindowPlacement(handle, &place);
switch(place.showCmd)
{
case SW_SHOWMAXIMIZED:
ShowWindow(handle, SW_SHOWMAXIMIZED);
break;
case SW_SHOWMINIMIZED:
ShowWindow(handle, SW_RESTORE);
break;
default:
ShowWindow(handle, SW_NORMAL);
break;
}
SetWindowPos(0, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
SetForegroundWindow(handle);
return 0;
}
操作那么多实在看不懂,毕竟没有写过C++。通过继续努力寻找,终于在现有的插件中,有这样一款插件可以实现。
Add WidgetsFlutterBinding.ensureInitialized(); to the start of your apps main function.
Add the async modifier to your apps main function.
Add a call to WindowsSingleInstance.ensureSingleInstance(), passing the apps startup args, a custom app string unique to your app (a-z, 0-9, _ and - only), and an optional callback function.
使用非常简单
void main(List<String> args) async {
WidgetsFlutterBinding.ensureInitialized();
//单实例启动
await WindowsSingleInstance.ensureSingleInstance(args, "app_id",
onSecondWindow: (args) async {
if (await windowManager.isMinimized()) {
windowManager.restore();
}
windowManager.focus();
});
runApp(const MyApp());
}
以上就可以实现单实例启动了。
很多时候我们只希望我们的应用只能启动一次,本文主要介绍下Flutter的windows桌面端如何实现只启动一次的方法。
直方图(Histogram)又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据类型,纵轴表示分布情况,本文主要介绍关于Python matplotlib.pyplot.hist()绘制直方图
对于一个PHPer来说,经常使用foreach,但是一般都循环一次,今天一个同事偏偏使用了两次foreach,第一次里面使用了地址符号,第二次循环又使用了同一个变量,这就造成了最后结果上出现问题。
在做搜索列表分页的时候,需要分页后的页面跳转的url地址中包含搜索的参数,在Laravel中的如何处理呢?
Redis是非常常用的内存数据库,那么要对Redis进行操作就需要使用相关命令,本文主要是记录在工作中对Redis操作比较常用的命令,以便查阅。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题