flutter3-os:基于flutter3.x+dart3+getx手機版os管理系統

flutter3-os-admin跨平臺手機后臺OS系統。

原創Flutter3.22+Dart3.4+Getx+fl_chart等技術開發仿ios手機桌面OA管理系統。自研柵格化布局引擎、自定義桌面壁紙、小部件、底部Dock菜單、可拖拽懸浮球等功能。

在這里插入圖片描述

全新自研柵格化OS菜單布局引擎。

在這里插入圖片描述

使用技術

  • 編輯器:VScode
  • 技術框架:Flutter3.22.1+Dart3.4.1
  • 路由/狀態管理:get^4.6.6
  • 本地存儲:get_storage^2.1.1
  • svg圖片插件:flutter_svg^2.0.10+1
  • 圖表組件:fl_chart^0.68.0
  • 國際化時間:intl^0.19.0

在這里插入圖片描述
之前有分享一款uniapp+vue3跨端仿ios手機桌面系統。
https://blog.csdn.net/yanxinyun1990/article/details/139103578

在這里插入圖片描述
編譯到windows端效果依然完美顯示。

在這里插入圖片描述
在這里插入圖片描述

項目結構

在這里插入圖片描述
采用最新版flutter3.22+dart3.4構建項目,探索全新的手機OA后臺管理系統新模式。

在這里插入圖片描述
目前該項目已經發布到我的原創作品集,如果有需要,歡迎去下載使用。
https://gf.bilibili.com/item/detail/1106107011

在這里插入圖片描述

main.js配置

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'utils/index.dart';// 柵格模板
import 'layouts/desk.dart';// 路由管理
import 'router/index.dart';void main() async {// 初始化get_storage存儲await GetStorage.init();initializeDateFormatting();runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {return GetMaterialApp(title: 'Flutter WeOS',debugShowCheckedModeBanner: false,theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),useMaterial3: true,// 修復windows端字體粗細不一致fontFamily: Platform.isWindows ? 'Microsoft YaHei' : null,),home: const DeskLayout(),// 初始化路由initialRoute: Utils.isLogin() ? '/' : '/launch',// 路由頁面getPages: routes,);}
}

flutter3數字解鎖

在這里插入圖片描述
一改以往輸入框驗證模式,使用全新自研的數字密碼解鎖新模式。

在這里插入圖片描述
在這里插入圖片描述
使用 AnimatedSwitcherFadeTransition 實現動畫效果。

@override
Widget build(BuildContext context) {return Layout(extendBodyBehindAppBar: true,body: Container(padding: const EdgeInsets.all(20.0),child: AnimatedSwitcher(duration: const Duration(milliseconds: 250),// 動畫控制transitionBuilder: (child, animation) {return FadeTransition(opacity: animation,child: ScaleTransition(// scale: animation,scale: animation.drive(Tween(begin: 0.9, end: 1.0).chain(CurveTween(curve: Curves.easeOut))),child: child,),);},// 當內容有變化的時候就會觸發動畫child: splashScreen ? GestureDetector(// 修復Column和Row組件,點擊空白處無響應問題behavior: HitTestBehavior.translucent,child: Column(children: [...],),onPanStart: (details) {setState(() {swipeY = details.globalPosition.dy;});},onPanUpdate: (details) {double posY = swipeY - details.globalPosition.dy;if(posY > 100) {setState(() {splashScreen = false;});}},):Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [...],),),),),);
}

在這里插入圖片描述

Column(children: [const Text('數字密碼解鎖', style: TextStyle(color: Colors.white, fontSize: 14.0),),const SizedBox(height: 10.0,),Wrap(spacing: 15.0,children: List.generate(passwordArr.length, (index) {return AnimatedContainer(duration: const Duration(milliseconds: 300),height: 10.0,width: 10.0,decoration: BoxDecoration(color: int.parse(passwordArr[index]) <= pwdValue.length ? Colors.white : Colors.white.withOpacity(0.01),border: Border.all(color: Colors.white),borderRadius: BorderRadius.circular(50.0),),);})),],
),

在這里插入圖片描述

Container(width: 250.0,margin: const EdgeInsets.only(top: 50.0),child: Wrap(spacing: 15.0,runSpacing: 15.0,alignment: WrapAlignment.center,children: List.generate(keyNumbers.length, (index) {return Material(type: MaterialType.transparency,child: Ink(height: 60.0,width: 60.0,decoration: BoxDecoration(color: Colors.white24,border: Border.all(color: Colors.white24, width: .5),borderRadius: BorderRadius.circular(50.0),),child: InkWell(borderRadius: BorderRadius.circular(50.0),overlayColor: WidgetStateProperty.all(Colors.white38),child: DefaultTextStyle(style: const TextStyle(color: Colors.white, fontFamily: 'arial'),child: Column(children: [const SizedBox(height: 10.0,),Text(keyNumbers[index]['num'], style: const TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold),),Text(keyNumbers[index]['letter'], style: const TextStyle(fontSize: 10.0),),],),),onTap: () {handleClickNum(keyNumbers[index]['num']);},),),);})),
),

在這里插入圖片描述

flutter3桌面os布局

桌面布局分為柵格式菜單+底部Dock菜單+拖拽懸浮球

在這里插入圖片描述

@override
Widget build(BuildContext context) {return Scaffold(extendBodyBehindAppBar: widget.extendBodyBehindAppBar,appBar: widget.appBar ?? AppBar(forceMaterialTransparency: true,backgroundColor: Colors.transparent,foregroundColor: Colors.white,toolbarHeight: 0,),body: Center(child: Stack(children: [// 壁紙皮膚if(widget.showBackground)Obx(() => Container(decoration: BoxDecoration(image: DecorationImage(image: AssetImage('${skinController.skinUrl}'),fit: BoxFit.fill,),),)),Flex(direction: Axis.vertical,crossAxisAlignment: CrossAxisAlignment.start,children: [// 頂部插槽Container(child: widget.header,),// 內容區域Expanded(child: widget.body ?? Container(),),// 底部插槽Container(child: widget.footer,),],),// 額外插槽Container(child: widget.extra,),],),),);
}

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

flutter3桌面os菜單

在這里插入圖片描述
在這里插入圖片描述

/** ================== 桌面os菜單配置項 ==================* [label]  圖標標題* [imgico] 圖標(本地或網絡圖片) 當type: 'icon'則為uni-icons圖標名,當type: 'widget'則為自定義小部件標識名* [type]   圖標類型(icon | widget) icon為uni-icons圖標、widget為自定義小部件* [path]   跳轉路由頁面* [link]   跳轉外部鏈接* [hideLabel]  是否隱藏圖標標題* [background] 自定義圖標背景色* [size] 柵格磁貼布局(16種) 1x1 1x2 1x3 1x4、2x1 2x2 2x3 2x4、3x1 3x2 3x3 3x4、4x1 4x2 4x3 4x4* [onClick]  點擊圖標回調函數*/

在這里插入圖片描述

只需配置children參數,即可生成一個二級彈窗菜單。

在這里插入圖片描述
在這里插入圖片描述

// 桌面os菜單配置  Q:282310962
List deskMenus = [...{'uid': '3u85fb90-12c4-11e1-840d-7b25c5ee775a','list': [{'label': 'Flutter3.22', 'imgico': 'assets/images/flutter.png', 'link': 'https://flutter.dev/'},{'label': 'Dart中文官方文檔', 'imgico': 'assets/images/dart.png', 'link': 'https://dart.cn/'},...{'label': '日歷', 'imgico': const Calendar1x1(), 'type': 'widget', 'path': '/calendar', 'background': const Color(0xffffffff),},{'label': '首頁', 'imgico': const Icon(Icons.home_outlined), 'type': 'icon', 'path': '/home'},{'label': '工作臺', 'imgico': const Icon(Icons.poll_outlined), 'type': 'icon', 'path': '/workplace'},{'label': '組件','children': [{'label': '組件', 'imgico': 'assets/images/svg/component.svg', 'path': '/component'},...]},{'label': '管理中心','children': [{'label': '個人主頁', 'imgico': 'assets/images/svg/my.svg', 'path': '/ucenter'},...]},{'label': '編程開發','children': [{'label': 'Github', 'imgico': 'assets/images/svg/github.svg', 'background': const Color(0xff607d8b),},{'label': 'Flutter', 'imgico': 'assets/images/flutter.png', 'background': const Color(0xFFDAF2FA),},{'label': 'ChatGPT', 'imgico': 'assets/images/svg/chatgpt.svg', 'background': const Color(0xFF15A17F),},...]},{'label': '關于', 'imgico': const Icon(Icons.info), 'type': 'icon','onClick': () => {...}},{'label': '公眾號', 'imgico': const Icon(Icons.qr_code), 'type': 'icon','onClick': () => {...}},]}...
];

綜上就是flutter3.22+getx實戰手機桌面os系統的一些分享,希望對大家有所幫助~

https://blog.csdn.net/yanxinyun1990/article/details/138317354

https://blog.csdn.net/yanxinyun1990/article/details/136996521

https://blog.csdn.net/yanxinyun1990/article/details/136410049

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23412.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23412.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23412.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入理解feign遠程調用的各種超時參數

1. 引言 在spring cloud微服中&#xff0c;feign遠程調用可能是大家每天都接觸到東西&#xff0c;但很多同學卻沒咋搞清楚這里邊的各種超時問題&#xff0c;生產環境可能會蹦出各種奇怪的問題。 首先說下結論&#xff1a; 1)只使用feign組件&#xff0c;不使用ribbion組件&…

【Text2SQL 論文】How to prompt LLMs for Text2SQL

論文&#xff1a;How to Prompt LLMs for Text-to-SQL: A Study in Zero-shot, Single-domain, and Cross-domain Settings ???? arXiv:2305.11853, NeurlPS 2023 Code: GitHub 一、論文速讀 本文主要是在三種常見的 Text2SQL ICL settings 評估不同的 prompt constructio…

數據分析必備:一步步教你如何用Pandas做數據分析(18)

1、Pandas 串聯 Pandas 連接的操作實例 Pandas提供了各種功能&#xff0c;可以輕松地將Series&#xff0c;DataFrame和Panel對象組合在一起。 pd.concat(objs,axis0,joinouter,join_axesNone,ignore_indexFalse)objs ? 這是Series的序列或映射&#xff0c;DataFrame或Panel對…

【云嵐到家】-day01-項目熟悉-查詢區域服務開發

文章目錄 1 云嵐家政項目概述1.1 簡介1.2 項目業務流程1.3 項目業務模塊1.4 項目架構及技術棧1.5 學習后掌握能力 2 熟悉項目2.1 熟悉需求2.2 熟悉設計2.2.1 表結構2.2.2 熟悉工程結構2.2.3 jzo2o-foundations2.2.3.1 工程結構2.2.3.2 接口測試 3 開發區域服務模塊3.1 流程分析…

Python接口自動化之使用requests庫發送http請求

requests庫 ? 什么是Requests &#xff1f;Requests 是?Python語?編寫&#xff0c;基于urllib&#xff0c;采?Apache2 Licensed開源協議的 HTTP 庫。它? urllib 更加?便&#xff0c;可以節約我們?量的?作&#xff0c;完全滿?HTTP測試需求。 ? 安裝&#xff1a;cmd命…

docker 拉取不到鏡像的問題:拉取超時

error pulling image configuration: download failed after attempts6: dial tcp 31.13.94.10:443: i/o timeout 首先設置國內的鏡像源&#xff1a;復制下面直接執行 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF{"registry-mirrors"…

【POSIX】消息類的格式與使用

本文給出一個MacOS操作系統中的消息類的使用過程示例&#xff08;結合gencat命令&#xff0c;<nl_types.h>頭文件以及catopen,catgets,catclose3個函數&#xff09; 首先根據對應的操作系統&#xff0c;查看 gencat 命令 man gencat 可以詳細看到其中對于輸入文件&…

Spark MLlib 機器學習詳解

目錄 &#x1f349;引言 &#x1f349;Spark MLlib 簡介 &#x1f348; 主要特點 &#x1f348;常見應用場景 &#x1f349;安裝與配置 &#x1f349;數據處理與準備 &#x1f348;加載數據 &#x1f348;數據預處理 &#x1f349;分類模型 &#x1f348;邏輯回歸 &a…

? 傳知代碼 ? 輔助任務改進社交帖子多模態分類

&#x1f49b;前情提要&#x1f49b; 本文是傳知代碼平臺中的相關前沿知識與技術的分享~ 接下來我們即將進入一個全新的空間&#xff0c;對技術有一個全新的視角~ 本文所涉及所有資源均在傳知代碼平臺可獲取 以下的內容一定會讓你對AI 賦能時代有一個顛覆性的認識哦&#x…

【自然語言處理】【Scaling Law】語言模型物理學 第3.3部分:知識容量Scaling Laws

語言模型物理學3.3&#xff1a;知識容量Scaling Laws 論文名稱&#xff1a;Physics of Language Models: Part 3.3, Knowledge Capacity Scaling Laws 論文地址&#xff1a;https://arxiv.org/pdf/2404.05405 相關博客 【自然語言處理】【Scaling Law】Observational Scaling …

R語言探索與分析17-股票題目

Value at Risk&#xff08;VaR&#xff09;是一種統計技術&#xff0c;用于量化投資組合在正常市場條件下可能遭受的最大潛在損失。它是風險管理和金融領域中一個非常重要的概念。VaR通常以貨幣單位表示&#xff0c;用于估計在給定的置信水平和特定時間范圍內&#xff0c;投資組…

OpenCV的小部件最基本范例

OpenCV也有與PYQT類似的小部件&#xff0c;例如滑塊slider。OpenCV可以用與PYQT類似的“信號與槽”方法&#xff0c;也可以在函數中直接查詢小部件的值。 import cv2 import numpy as npcv2.namedWindow(Show1) image np.zeros((100, 400, 3), np.uint8) # 創建一個空白內容…

JavaScript基礎知識4(數組、函數、參數、作用域、具名和匿名函數、邏輯運算符短路、轉化布爾類型)

JavaScript基礎知識4&#xff08;數組、函數、參數、作用域、具名和匿名函數、邏輯運算符短路、轉化布爾類型&#xff09; 數組數組是什么&#xff1f;數組的基本使用定義數組和數組單元訪問數組和數組索引數據單元值類型數組長度屬性 操作數組 函數聲明和調用聲明&#xff08;…

(面試官問我微服務與naocs的使用我回答了如下,面試官讓我回去等通知)微服務拆分與nacos的配置使用

微服務架構 正常的小項目就是所有的功能集成在一個模塊中&#xff0c;這樣代碼之間不僅非常耦合&#xff0c;而且修改處理的時候也非常的麻煩&#xff0c;應對高并發時也不好處理&#xff0c;所以 我們可以使用微服務架構&#xff0c;對項目進行模塊之間的拆分&#xff0c;每一…

前端傳參數后端變量類型能夠接受到List卻無法接收到值

問題描述 今天寫了個接口&#xff0c;下圖所示 ReqVO里是這樣的&#xff1a; 然后前端去請求&#xff0c;從請求結果中看發現這里值是在的&#xff08;有經驗的可能就看出來了otherInfo.id: 這樣以參數后端是接收不到的&#xff0c;但是當時沒發現&#xff09; 傳進來后端…

維納運動的概念

維納運動&#xff08;Wiener Process&#xff09;&#xff0c;也稱為標準布朗運動&#xff0c;是一種重要的隨機過程&#xff0c;廣泛應用于數學、物理學和金融學等領域。它是一個連續時間的隨機過程&#xff0c;具有一些特殊的性質&#xff0c;使其成為描述隨機動態系統的經典…

GAT1399協議分析(8)--批量圖像查詢

一、請求消息定義 視頻圖像包含視頻片段、 圖像、 文件、 人員、 人臉、 機動車、 非機動車、 物品、 場景和視頻案事件、 視頻圖像標簽等對象 在消息體中,可以包含其中一種類,加上Data字段即可。 ImageInfo對象 二、請求消息實例 wireshark 抓包實例 請求: 文本化: /V…

制造執行MES系統在光伏行業的應用

全球對可再生能源的需求不斷增長&#xff0c;光伏能源作為一種清潔、可持續的能源形式&#xff0c;已經在廣泛應用中受到了廣泛關注。為滿足工業領域的光伏能源需求&#xff0c;光伏制造執行系統(MES)作為一種集成化的技術解決方案&#xff0c;提供了更高效、更可靠的解決方案。…

WPS的JSA算國產編程語言,IDE,腳本工具嗎?javascript代替VBA

現在wps用javascript代替VBA&#xff0c;應該算很成功了吧。 如果可以獨立出來變成一個腳本語言&#xff0c;簡單的IDE(本身也有類似VBA&#xff0c;不要寄宿在WPS里面運行&#xff0c;這樣就可以變成VBS一樣執行腳本了&#xff0c;用來開發按鍵精靈,LUA一樣的腳本很不錯 以下…

Activity->Activity中動態添加Fragment->Fragment回退棧BackStack

Fragment回退棧 Fragment回退棧用于管理Fragment的導航歷史(添加、刪除、替換)。每個Activity都有一個包含其所有Fragment的FragmentManager&#xff0c;調用其addToBackStack方法時&#xff0c;這個事務就會被添加到FragmentManager的回退棧中當用戶按下返回鍵時&#xff0c;…