images/default4.jpg

Flutter Clipboard 剪贴板操作: 复制到剪贴板 / 从剪贴板中获取

Saturday, May 30, 2020

我们在使用Flutter进行开发时, 有时会使用类似"复制本段文字"的功能. 为了提升用户体验, 我们不希望用户长按文字, 再自行复制, 我们希望提供一个按钮直接点击复制, 甚至自动复制! 反之从剪贴板获取也一样. 效果 有图有真相, 不说废话, 直接展示最终效果: 复制到剪贴板 从剪贴板获取(粘贴) [epcl_box type=“information”]如果你了解阿航的技术小站, 应该会知悉每篇文章都会提供相当详细且完整的源码. [/epcl_box] 应用场景 复制到剪贴板 生成了运单号, 需要用户进行保存; 某些微商APP需要复制文案, 发布朋友圈; 文学类APP中, 发现一段非常好的句子, 想发给好友. 从剪贴板中获取 直接填入用户复制的短信验证码. 淘宝分享的东西, 复制后打开淘宝APP. [epcl_box type=“information”]当然, 以上只是举了几种例子, 还有更多可以提升用户操作体验的实例在此不过多举例了, 直接开始.[/epcl_box] 实战开始 初始化Flutter项目 创建Flutter项目, 清理一下./lib/main.dart: import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter剪贴板操作', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: 'Flutter剪贴板操作'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.
3 minute read
images/default3.jpg

Waiting for another flutter command to release the startup lock...

Tuesday, May 26, 2020

又是开发APP的一天, 但是在执行Flutter命令时, 终端中返回: Waiting for another flutter command to release the startup lock… 字面意思是: 正在等待另一个正在执行的Flutter命令完成… 本篇文章就来记录一下如何如何解决这种问题. 出现原因 非常明显, 它告诉了我们已经有另一个Flutter命令正在执行! 一方面因为国内网络的原因, 有些命令执行相当慢. 导致可能很久之前执行的命令到现在也没完成. 亦或者是Flutter自己在后台执行了一些命令. 解决方案 所以, 要解决这个问题, 我们的目标就确定了. 那就是关闭掉当前执行的Flutter命令进程! 这里阿航给大家提供了若干方法, 大家可以按需选择. 方法一: 安全地等待执行结束 这个是最省心, 也是最安全的方式. 因为强行停止某个进程可能会出现各种异常, 甚至会导致需要重新安装Flutter… 如果真变成这样就糟透了😭😭😭 当然, 有时我们不想等, 那么就需要下面的方法了. 方法二: taskkill 打开Flutter安装目录, 复制dart.exe的路径(一般会在flutter安装目录\bin\cache\dart-sdk\bin). 打开Powershell或CMD. 若盘符不一致, 需要先切换盘符, 比如当前在C盘, 切换至D盘: D: CD进入刚才复制的路径: cd flutter安装目录\bin\cache\dart-sdk\bin 使用taskkill关闭进程: taskkill /F /IM dart.exe 如果返回类似这样的信息即是成功: taskkill /F /IM dart.exe 成功: 已终止进程 "dart.exe",其 PID 为 9804。 [epcl_box type=“success”]这是目前最便捷的强行关闭方式!
1 minute read
images/default1.jpg

Flutter获取包名、APP名称、版本号、build构建版本号

Monday, May 25, 2020

在进行APP版本迭代的过程中, 有时我们需要通过获取当前APP的版本号, 与后端服务器获取的当前最新版本进行比对, 如果出现了最新版本, 我们提醒用户进行应用更新. 本篇文章就来记录一下Flutter获取包名、应用APP名称、版本号、build构建版本号. 最终效果 有图有真相, 先来看下最终效果吧! 应用场景 通过检查当前APP版本号来判断是否需要更新. APP出现错误日志需要传回服务器时, 获取APP基本信息(也就是看看bug出现在哪个版本!). 实战开始 引入PackageInfo 老样子, 上官方的存储库中寻找我们今天需要的PackageInfo: [epcl_box type=“information”]一般我们选用第三方库会看三个指标: 评分、兼容性以及活跃度.[/epcl_box] 这个库将会成为我们获取APP信息的主力. 进入./pubspec.yaml, 导入: dependencies: package_info: ^0.4.0+18 一定要注意缩进哦! 初始化项目 为了让大家更直观的看到, 这里提供./lib/main.dart的代码, 你可以直接进行复制并运行: import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: '获取设备信息Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: '获取设备信息'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.
2 minute read
images/default4.jpg

Flutter 修改包名 package name

Friday, May 22, 2020

通常使用flutter create命令创建新的flutter项目时, 包名是默认的com.example(或类似的包名). 很明显在开发一个属于自己的项目时, 这样是不对的. 需要将包名改为自己的或者所在公司的域名反写. 本篇文章就来写下如何修改Flutter的package name (包名). 方法一: 创建项目时指定包名 如果你还未创建项目, 或者已有项目代码量较少, 可以通过此命令来创建项目: flutter create --org 你的域名反写 项目名称 比如: flutter create --org com.bugcatt langaw 当然, 如果你的项目已经成型, 不便于迁移, 那么请考虑下面的方法. 方法二: 代码内修改 修改build.gradle(android) 打开./android/app/build.gradle, 找到类似这样的: defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.bugcatt.flutter_app_desktop" minSdkVersion 16 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } 修改其中的applicationId为你自己的. [epcl_box type=“information”]有些同学可能已经注意到了, defaultConfig中已经给出了一个"TODO"让我们处理![/epcl_box] 修改Info.plist(IOS) 打开./ios/Runner.xcodeproj, 搜索关键字PRODUCT_BUNDLE_IDENTIFIER. 修改所有的: PRODUCT_BUNDLE_IDENTIFIER = 包名; [epcl_box type=“notice”]分号什么的别忘记哦![/epcl_box] 修改AppInfo.xcconfig(MacOS) 如果你同样开启了MacOS的桌面应用开发, 则需要本步骤!
1 minute read