扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
先上图(样式自己调整)
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、雅安服务器托管、营销软件、网站建设、栾川网站维护、网站推广。
1.新建小部件
根据实际情况修改以下部分内容;
2.使用(index 为当前点击图片的下标,)
cooker
heater
cooler
cleaner(可指清洁用具的)
sailer
1) a person who ~s :做…的人
如:singer -- a person who sings 歌唱家
admirer -- a person who admires 钦佩者
2) a person who lives in ~ :住在…的人
如:farmer -- a person who lives in the farmer 农场主,畜牧者
villager -- a person who lives in the village 村民
3) a person who works with ~ :从事…的人
如:philosopher -- a person who works with philosophy 哲学家
tinner -- a person who works with tin 锡匠
4) a thing that ~ :做…的器物,工具
如:washer -- a thing that washes 洗涤器,洗衣机
boiler -- a thing that boils 煮器;锅炉
-er 作后缀表示“人”,大家都很熟悉,需要引起注意的是,它有时候表示的是“物”,这点容易让我们犯错误,列出一些(望大家来补充)一起记:
amplifier 放大器 emitter 发射极 reducer 减压器 softener 软化剂
cooker 炊具 typewriter 打字机 washer 洗涤器 boiler 锅炉
另外,-er 也可以放在形容词(adj.),副词(adv.)和数词(num.)的后面,构成人或物。
adj. stranger 陌生人 foreigner 外国人
adv. downer 令人沮丧的人,镇静剂 upper [美俚]兴奋剂,刺激性药物
num. fiver [英]5磅的钞票 [美]5美金 forty-niner 美国1849年涌向加州淘金的人
最后,-er 偶尔可以是表示动词,表示反复和拟声的动作,如:
snigger 暗笑(声)(单词发音模拟“窃笑”发出的声音) vi. n.
twitter 鸟鸣(声)(模拟鸟叫的“叽叽喳喳”声) vi. n.
chatter 喋喋不休,震颤(声) (来自动词 chat 闲谈) vi. n.
clatter 咔嗒(声) (模拟盘碟刀叉等相互撞击的声音,马蹄的“得得”声) vi. vt. n.
batter vt. 连续猛击 n. (棒球等)的击球手 (来自动词 bat 打)
patter 发出急速而轻的拍声;塔塔的跑(声);念念有词,喋喋叫卖 vi. n.
spatter 溅(声),撒落(声) vt. vi. n.
sputter 喷溅(声),劈啪(声) v. n.
flutter 振翅,拍翅膀 v. n.
quiver 抖动;颤音 v. n.
waver 摇摆,摇晃 vi.
wander 徘徊;迷失 v. n.
mutter 轻声低语,小声抱怨 v. n.
stutter 结结巴巴地说 v. n.
stammer 口吃,结巴 v. n.
glitter 闪闪发光 v. n.
powerful 强大的
peaceful
beautiful 美丽
Flutter支持稳定的桌面设备开发已经一段时间了,不得不说,Flutter多平台支持的特性真的很香。我本人并没有任何桌面开发的经验,但仍然使用Flutter开发出了一个桌面版小程序,功能很简单,就是对输入的json做格式化处理和转模型。
话不多说,先来看看实际效果。 项目源码地址
开发环境如下:
Flutter : 2.8.1
Dart : 2.15.1
IDE : VSCode
JSON作为我们日常开发工作中经常要打交道的一种数据格式,它共有6种数据类型: null , num , string , object , array , bool 。我们势必对它又爱又恨。爱他因为他作为数据处理的一种格式确实非常方便简洁。但是在我们做Flutter开发中,又需要接触到json解析时,就会感觉非常棘手,因为flutter没有反射,导致json转模型这块需要手写那繁杂的映射关系。就像下面这样子。
数据量少还能接受,一旦量大,那么光手写这个解析方法都能让你怀疑人生。更何况手写还有出错的可能。好在官方有个工具**json_serializable**可以自动生成这块转换代码,也解决了flutter界json转模型的空缺。当然,业界也有专门解析json的网站,可以自动生成dart代码,使用者在生成后复制进项目中即可,也是非常方便的。
本项目以json解析为切入点,和大家一起来看下flutter是如何开发桌面应用的。
要让我们的flutter项目支持桌面设备。我们首先需要修改下flutter的设置。如下,让我们的项目支持 windows 和 macos 系统。
接下来使用 flutter create 命令创建我们的模版工程。
创建完项目后,我们就可以 run 起来了。
先来看下整体界面,界面四块,分别为功能模块、文件选择模块、输入模块、输出模块。
我们在新建一个桌面应用时,默认的模版又一个Appbar,此时应用可以用鼠标拖拽移动,放大缩小,还可以缩到很小。但是,我们一旦去掉这个导航栏,那么窗口就不能用鼠标拖动了,并且我们往往不希望用户将我们的窗口缩放的很小,这会导致页面异常,一些重要信息都展示不全。因此这里需要借助第三方组件 bitsdojo_window 。通过 bitsdojo_window ,我们可以实现窗口的定制化,拖动,最小尺寸,最大尺寸,窗口边框,窗口顶部放大、缩小、关闭的按钮等。
通过 InkWell 组件,可以捕捉到手势、鼠标、触控笔的移动和停留位置
这个功能是鼠标移动后的UI交互界面。要在窗口上显示一个提示框,可以使用 Overlay 。需要注意的是,由于在 Overlay 上的 text 的根结点不是 Material 风格的组件,因此会出现黄色的下划线。因此一定要用 Material 包一下 text 。并且你必须给创建的 OverlayEntry 一个位置,否则它将全屏显示。
读取说表拖拽的文件一开始想尝试使用 InkWell 组件,但是这个组件无法识别拖拽中的鼠标,并且也无法从中拿到文件信息。因此放弃。后来从文章《Flutter-2天写个桌面端APP》中发现一个可读取拖拽文件的组件 desktop_drop ,能满足要求。
使用开源组件 file_picker ,选完图片后的操作和拖拽选择图片后的操作一致。
Textfield 如果要显示富文本,那么需要自定义 TextEditingController 。并重写 buildTextSpan 方法。
在做导出功能时遇到下列报错,保存提示为没有权限访问对应目录下的文件。
通过Apple的开发文档找到有关权限问题的说明。其中有个授权私钥的key为 com.apple.security.files.downloads.read-write ,表示 对用户的下载文件夹的读/写访问权限 。那么,使用Xcode打开Flutter项目中的mac应用,修改工程目录下的 DebugProfile.entitlements 文件,向 entitlements 文件中添加 com.apple.security.files.downloads.read-write ,并将值设置为YES,保存后重启Flutter项目。发现已经可以向下载目录中读写文件了。
当然,这是正常操作。还有个骚操作就是关闭系统的沙盒机制。将 entitlements 文件的 App Sandbox 设置为NO。这样我们就可以访问任意路径了。当然关闭应用的沙盒也就相当于关闭了应用的防护机制,因此这个选项慎用。
原文地址:
窗口小部件(Widget)可以在Paint之前应用Transform进行转换,通过Transform可以对widget进行平移、旋转、缩放等矩阵变换。不像RotatedBox在layout前就对Widget进行旋转操作,Transform是在Widget绘制前进行转换,这意味着在计算Widget的显示需要占用多少空间时,不会去考虑Transform变换。
例子
在垂直方向移动15个单位距离
例子
顺时针旋转45°
例子
放大1.5倍
SA系列伺服放大器是专为我所研制的CSDY系列射流管电液伺服阀配套而设计的专用控制器。该放大器和我所生产的CSDY系列电液伺服阀配以各种不同的执行元件及反馈检测元件,可构成阀控油缸,阀控马达,阀控泵等多种性能优良的位置、速度、加速度、力电液伺服控制系统。SA-01型伺服放大器下主要针对部分CSDY系列设计的。根据不同的负载选择不同输出额定电流档位。该放大器有输出额定电流分别为8mA,15mA,20mA,40mA四个档位,对应的负载(阀线圈)阻抗分别为500欧姆、175欧姆、80欧姆、20欧姆。可以差动、串联、并联等方式工作,我们建议选用并联工作方式为好。
SA-02型市带有振颤信号的伺服放大器。该振颤信号源为一双T网络的正弦波振荡器,其频率为159Hz左右,其作用市给伺服阀一个高于工作频率的扰动量,用以改善阀芯的静态及低频摩擦特性,减小伺服阀的滞环,改善伺服阀的控制性能。
伺服放大器(servo-valve amplifier)
Model:SA-01型:
放大增益
Amplify gain 1-20mA/V
输入电压
Input pressure Vpp=+-10V
最大输出电流
Max Output current 1P=2(rated current)
非线性失真
nonlinear distortion =+-1%
稳定性
Stability =1.5%
Model:SA-02型:
放大增益
Amplify gain 1-20mA/V
输入电压
Input pressure Vpp=+-10V
最大输出电流
Max Output current 1P=1.5(rated current)
非线性失真
nonlinear distortion =+-1%
稳定性
Stability =1.5%
颤振信号源
Flutter signal F=159Hz
扰动幅值
Amplitude perturbation =30%(rated current)
Model:SA-01型:
输入电压
Input pressure AC 220V 50Hz
输出电压
Output pressure DC+-15V +5V
线性调整率(电压稳定度)
Linear adjustment rate (pressure stability) =1%
负载调整率(负载稳定度)
Load adjustment rate (Load stability) =1%
纹波及噪声
Ripple and noise =1%的输出电压(MVP-P)
Output pressure
Model:SA-02型:
输入电压
Input pressure DC 24V 5W
输出电压
Output pressure DC +-5V
Servo-valve Amplifier Model:SA-01
Amplify gain 1-20mA/V
Input pressure Vpp=+-10V
Max Output current 1P=2(rated current)
Nonlinear distortion =+-1%
Stability =1.5%
Servo-valve Amplifier Model:SA-02
Amplify gain 1-20mA/V
Input pressure Vpp=+-10V
Max Output current 1P=1.5(rated current)
Nonlinear distortion =+-1%
Stability =1.5%
Flutter signal F=159Hz
Amplitude perturbation =30%(rated current)
Servo-valve Amplifier Model:SA-01
Input pressure AC 220V 50Hz
Output pressure DC+-15V +5V
Linear adjustment rate (pressure stability) =1%
Load adjustment rate (Load stability) =1%
Ripple and noise =1% Output pressure(MVP-P)
Servo-valve Amplifier Model:SA-02
Input pressure DC 24V 5W
Output pressure DC +-5V
项目地址: 持续效果更新
flutter 有个onTapUp 事件,字面意思就是 点击抬起的,会返回 TapUpDetails details ,通过 localPosition 属性就能获取到x,y坐标
计算double 并不复杂,每次点击的时候记录下当前的事件戳,只要两个点击的时间戳和坐标距离小于自己设定的阈值,就可以视为双击事件
实现双击
我们使用OverlayEntry 控件,控件详细介绍
效果一共有 缩小 → 上移 → 放大 → 消失
第一组动画(缩小 上移) → 第二组动画(放大 消失)
flutter 动画需要两个类
AnimationController 负责管理动画
Animation 负责具体值操作
然后通过 Transform.scale 函数的,对scale值进行改变
补全第一组动画
现实
项目地址: 持续效果更新
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流