1. dio: ^2.1.4flutter的http请求库,支持get、post请求,支持添加拦截器,支持添加请求头2. shared_preferences数据库持久化的库,保存轻量级的用户数据。对应android的SharedPreferences,对应ios的NSUserDefaults3. crypto: ^2.0.6数据加密库,MD5,DES加密,项目中使用MD5的加密4.event_bus: ^1.0.1事件分发总线库,使用StreamController实现的,对标Android的EventBus5. flutter_webview_plugin: ^0.3.5webview 加载库6. flutter_html: ^0.10.4HTML富文本加载库7. flutter_swiper: ^1.1.6flutter的图片轮播库8.image_picker: ^0.6.1+4图片选择库,支持相册,拍照功能9. image_cropper: ^1.0.2图片修剪的库10. fluro: ^1.3.4控制路由跳转的库11. sqflite: ^1.1.5数据库的库12.path_provider: ^1.1.0访问文件路径的库13. permission_handler: ^3.1.0权限请求的库14. fluttertoast: ^3.1.0toast 的库15. video_player: ^0.10.0+2视频播放的库16. auto_orientation: ^0.0.2转屏(竖屏,横屏)的库17.extended_image: ^0.5.5图片的三级缓存的库18.url_launcher: ^5.0.2打电话,邮箱 ,短信的库19. intl: ^0.15.7国际化20.chewie: ^0.9.7对video_player的封装,视频控制器,控制栏和全屏的功能
english_words 随机生成单词
dependencies:flutter:sdk: flutterenglish_words:
import "package:english_words/english_words.dart";void main(){// generateWordPairs 随机生成2个单词var s1 = generateWordPairs().take(2);print(s1); //(floorguide, pangrief)print(s1.toList()); //[coldpond, madjudge]print(s1.map((e) => e.asPascalCase).toList()); //[StrictFirm, LightRim]// 生成指定单词var word = new WordPair('book', 'go');print(word); //bookgoprint(word.asPascalCase); //BookGo// 随机生成一个单词var w2 = new WordPair.random();print(w2); //stillpitchprint((w2).asPascalCase); //StillPitch 帕斯卡命名法(首字母大写),后续单字的首字母都用大写字母print((w2).asCamelCase); //stillPitch 骆驼式命名法(首字母小写),后续单字的首字母都用大写字母print((w2).asLowerCase); //stillpitchprint((w2).asUpperCase); //STILLPITCHprint((w2).asString); //stillpitch}
crypto 加密
https://pub.dev/packages/crypto
安装依赖
dependencies:crypto: ^2.1.5
导入
import 'package:crypto/crypto.dart';
A set of cryptographic hashing functions implemented in pure Dart
The following hashing algorithms are supported:
- SHA-1
- SHA-224
- SHA-256
- SHA-384
- SHA-512
- MD5
- HMAC (i.e. HMAC-MD5, HMAC-SHA1, HMAC-SHA256)
Digest on a single input
To hash a list of bytes, invoke the convert method on the sha1, sha256 or md5 objects.
import 'package:crypto/crypto.dart';import 'dart:convert'; // for the utf8.encode methodimport 'package:convert/convert.dart';void main() {var bytes = utf8.encode("foobar"); // data being hashed//等同于:var bytes = Utf8Encoder().convert("foobar");var digest = md5.convert(bytes);return hex.encode(digest.bytes); //hex 需要 import 'package:convert/convert.dart';//等同于return digest.toString();print(bytes);print(digest);print(digest.bytes);}//md5.convert(utf8.encode('foobar')).toString()
示例
import 'dart:convert';import 'package:convert/convert.dart';void main(){String generateMd5(String data) {var bytes = utf8.encode(data);var digest = md5.convert(bytes);return hex.encode(digest.bytes);}String getSign(Map paramerter) {var Key = '密钥';var timestamp = DateTime.now().millisecondsSinceEpoch;var versionNumber = 'app-V1';paramerter['timestamp'] = timestamp.toString();paramerter['versionNumber'] = versionNumber;// 存储所有的keyList<String> allKeys = [];paramerter.forEach((key, value) {allKeys.add(key + value);});// key排序allKeys.sort((a, b) => a.compareTo(b));// 数组转stringString pairString = allKeys.join('');// 拼接ABC是你的密钥String sign = Key + pairString + Key;// hashString signString = generateMd5(sign).toUpperCase();//String signString = md5.convert(utf8.encode(sign)).toString().toUpperCase(); //直接写也可以return signString;}var formData = {'adCode': '000000'};formData['sign'] = getSign(formData);print(formData);//{adCode: 000000, timestamp: 1607246978538, versionNumber: app-V1, sign: 4DB9FB09BEC1B8681BF426BFA73B9FDF}};
webview_flutter
https://pub.dev/packages/webview_flutter
安装依赖
dependencies:webview_flutter: ^1.0.7
导入
import 'package:webview_flutter/webview_flutter.dart';
使用
webview_page.dart
import 'package:flutter/material.dart';import 'package:app1/pages/web_view/webview_template.dart';class WebviewPage extends StatelessWidget {WebviewPage({key,@required this.url,this.title,this.showAppBar,}) : super(key: key);final String url;final String title;final bool showAppBar;@overrideWidget build(BuildContext context) {return WebViewTemplate(url: url,title: title,showAppBar: showAppBar,);}}
webview_template.dart
import 'dart:io';import 'package:flutter/material.dart';import 'package:webview_flutter/webview_flutter.dart';import 'package:app1/coms/loading/ELoading.dart';class WebViewTemplate extends StatefulWidget {WebViewTemplate({key,@required this.url,this.title,this.showAppBar,}) : super(key: key);final String url;final String title;final bool showAppBar;@override_WebViewTemplateState createState() => _WebViewTemplateState();}class _WebViewTemplateState extends State<WebViewTemplate> {@overridevoid initState() {super.initState();// Enable hybrid composition.if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();}onPageStarted(url) {ELoading.show(status: "加载中...");}onPageFinished(url) {ELoading.destroy();}@overridedispose() {super.dispose();ELoading.destroy();}@overrideWidget build(BuildContext context) {return Scaffold(appBar: (widget.showAppBar) ? AppBar(title: Text(widget.title)) : null,body: WebView(initialUrl: widget.url,javascriptMode: JavascriptMode.unrestricted,onPageStarted: onPageStarted,onPageFinished: onPageFinished,),);}}
