Flutter外部包 package
开发项目要用到很多第三方的包 为站在巨人的肩膀上无需从头开始开发所有应用程序
Flutter引入包
Flutter 开源改变世界Flutter 的依赖包
//flutter.dev/docs/get-started/codelab#step-2-use-an-external-package
Flutter软件包支持场景
网络请求(http)
自定义导航/路由处理(fluro)
集成设备API(如url_launcher&battery)
包Packages仓库 //pub.dartlang.org/flutter/ 有许多软件包
将包依赖项添加到应用程序
项目根目录下的 pubspec.yaml 文件 n在dependencies下添加
在 terminal中 运行 flutter packages get 安装然后导入在Dart代码中添加相应的import语句
例使用 CSS Colors package
该 css_colors 包为CSS颜色定义颜色常量允许您在Flutter中需要Color类型的任何位置使用
要使用这个包创建一个名为 cssdemo 的新项目
打开 pubspec.yaml 并将
dependencies:
flutter:
sdk: flutter
替换为:
dependencies:
flutter:
sdk: flutter
css_colors: ^1.0.0
在terminal中运行 flutter packages get
打开 lib/main.dart 并替换其全部内容
import 'package:flutter/material.dart';
import 'package:css_colors/css_colors.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new DemoPage(),
);
}
}
class DemoPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Container(color: CSSColors.orange)
);
}
}
运行应用程序即可
开发Flutter packages
如果软件包不适用于您的特定需求 则可以开发新的自定义package
管理包依赖和版本
Package versions
所有软件包都有一个版本号在pubspec.yaml文件中指定
Pub会在其名称旁边显示软件包的当前版本
例如请参阅url_launcher软件包
//pub.dartlang.org/packages/url_launcher
当pubspec.yaml使用速记形式添加包
plugin1: 这被解释为plugin1: any
即可以使用任何版本的包为了确保某个包在更新后还可以正常使用
建议使用以下格式之一指定版本范围范围限制 指定一个最小和最大的版本号,如:
dependencies:
url_launcher: '>=0.1.2 <0.2.0'
范围限制使用 caret 语法: 与常规的范围约束类似(译者语:这和node下npm的版本管理类似)
dependencies:
collection: '^0.1.2'
更新Flutter依赖包
添加一个包后首次运行 flutter packages get
Flutter将找到包的版本保存在pubspec.lock
确保了如果您或您的团队中的其他开发人员运行flutter packages get后回获取相同版本的包
如果要升级到软件包的新版本例如使用该软件包中的新功能请运行
flutter packages upgrade
将根据您在pubspec.yaml中指定的版本约束下载所允许的最高可用版本
依赖未发布的packages即使未在Pub上发布 软件包也可以使用对于不用于公开发布的专用插件
或者尚未准备好发布的软件包 可以使用其他依赖项选项:
路径 依赖
一个Flutter应用可以依赖一个插件通过文件系统的path:依赖路径可以是相对的 也可以是绝对的
例如 要依赖位于应用相邻目录中的插件’plugin1’
请使用以下语法
dependencies:
plugin1:
path: ../plugin1/
Git 依赖
也可以依赖存储在Git仓库中的包
软件包位于仓库的根目录中请使用以下语法
dependencies:
plugin1:
git:
url: git://github.com/flutter/plugin1.git
Git 依赖于文件夹中的包
默认情况下Pub假定包位于Git存储库的根目录中。如果不是这种情况
您可以使用path参数指定位置如
dependencies:
package1:
git:
url: git://github.com/flutter/packages.git
path: packages/package1
最后您可以使用ref参数将依赖关系固定到特定的git commit branch或tag
Flutter URL Launcher
使用URL Launcher package to 启动浏览器
URL Launcher可以使您打开移动平台上的默认浏览器显示给定的URL
演示了软件包如何包含特定于平台的代码称这些软件包为插件
在Android和iOS上均受支持使用这个插件
创建一个名为’launchdemo’的新项目
打开 pubspec.yaml, 并将:
dependencies:
flutter:
sdk: flutter
替换为
dependencies:
flutter:
sdk: flutter
url_launcher: ^0.4.1
在terminal中运行 flutter packages get
打开 lib/main.dart 并替换其全部内容
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new DemoPage(),
);
}
}
class DemoPage extends StatelessWidget {
launchURL() {
launch('https://flutter.io');
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Center(
child: new RaisedButton(
onPressed: launchURL,
child: new Text('Show Flutter homepage'),
),
),
);
}
}
运行应用程序当您点击 Show Flutter homepage 时
看到手机的默认浏览器打开并出现Flutter主页
千年的回眸
flutter_secure_storage包
使用带有MODE_PRIVATE的SharedPreferences
preferences = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
还通过AES使用额外的加密
AES encryption is used for Android. AES secret key is encrypted with RSA and RSA key is stored in KeyStore
可以在source code中找到详细信息
对于安全令牌和其他敏感数据
在私有模式下使用flutter_secure_storage
而不是原始SharedPreferences会更安全