Created
October 12, 2019 08:13
-
-
Save CaiJingLong/40cab906a9f318432eae965b1c870edc to your computer and use it in GitHub Desktop.
从extended_image 的 editorKey中快速拿图片数据.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| static Future<Uint8List> getImageFromEditorKey( | |
| GlobalKey<ExtendedImageEditorState> editorKey) async { | |
| Uint8List result; | |
| final provider = | |
| editorKey.currentState.widget.extendedImageState.imageProvider; | |
| if (provider is AssetImage) { | |
| ByteData byteData; | |
| if (provider.package == null) { | |
| byteData = await rootBundle.load(provider.assetName); | |
| } else { | |
| byteData = await rootBundle | |
| .load("packages/${provider.package}/${provider.assetName}"); | |
| } | |
| result = byteData.buffer.asUint8List(); | |
| } else if (provider is FileImage) { | |
| result = provider.file.readAsBytesSync(); | |
| } else if (provider is MemoryImage) { | |
| result = provider.bytes; | |
| } else if (provider is NetworkImage) { | |
| final client = HttpClient(); | |
| final req = await client.getUrl(Uri.parse(provider.url)); | |
| for (final key in provider.headers.keys) { | |
| final value = provider.headers[key]; | |
| req.headers.add(key, value); | |
| } | |
| final response = await req.close(); | |
| final listList = await response.toList(); | |
| List<int> tmp = []; | |
| for (final list in listList) { | |
| tmp.addAll(list); | |
| } | |
| result = Uint8List.fromList(tmp); | |
| client.close(); | |
| } else if (provider is ExtendedNetworkImageProvider) { | |
| final file = await getCachedImageFile(provider.url); | |
| if (file != null) { | |
| result = file.readAsBytesSync(); | |
| } else { | |
| final client = HttpClient(); | |
| final req = await client.getUrl(Uri.parse(provider.url)); | |
| for (final key in provider.headers.keys) { | |
| final value = provider.headers[key]; | |
| req.headers.add(key, value); | |
| } | |
| final response = await req.close(); | |
| final listList = await response.toList(); | |
| List<int> tmp = []; | |
| for (final list in listList) { | |
| tmp.addAll(list); | |
| } | |
| result = Uint8List.fromList(tmp); | |
| client.close(); | |
| } | |
| } else { | |
| result = (await editorKey.currentState.image.toByteData()) | |
| .buffer | |
| .asUint8List(); | |
| } | |
| return result; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment