小编Jos*_*Jet的帖子

不推荐使用 inheritFromWidgetOfExactType 代替使用 DependOnInheritedWidgetOfExactType

自 Flutter 1.12 发布以来,我的以下代码:

static MyInheritedWidget of(BuildContext context) {
  return context.inheritFromWidgetOfExactType(MyInheritedWidget) as MyInheritedWidget;
}
Run Code Online (Sandbox Code Playgroud)

警告如下:

'inheritFromWidgetOfExactType' 已弃用,不应使用。改用dependOnInheritedWidgetOfExactType。此功能在 v1.12.1 之后被弃用。尝试用替换来替换弃用成员的使用。

但是当我尝试更换它时,它不起作用:

static MyInheritedWidget of(BuildContext context) {
  return context.dependOnInheritedWidgetOfExactType(MyInheritedWidget) as MyInheritedWidget;
}
Run Code Online (Sandbox Code Playgroud)

有人知道怎么做吗?谢谢!

dart flutter

48
推荐指数
2
解决办法
2万
查看次数

解码base64字符串并将其另存为flutter时出现问题

我在我的应用程序中进行了聊天,用户可以在其中发送短信或上传文件(仅jpg和pdf)。对于文件,我将它们以base64编码发送到服务器,然后在服务器端进行转换。接下来的所有步骤都已经完成:

  1. 服务器获取base64字符串,并将其另存为图像或pdf。
  2. 这个文件还可以,因为我可以从ftp中打开它们。
  3. 应用程序中的用户(如果尚未从服务器下载文件)(服务器从文件中返回base64编码的字符串)
  4. 在颤动的一面,我得到了字符串,并对其进行了解码。这就是我遇到的问题:

    • 如果我将解码的base64字符串直接用作Image.memory(Uint8List),它将显示没有问题。因此,该问题与base64字符串无关。

    • 但这不是我想要的行为,因为如果文件不存在,我希望第一次“下载”该文件,然后如果存在,我只想打开它(将os默认软件用于图像或pdf)

这是我用于保存文件的代码:

String dir = (await getApplicationDocumentsDirectory()).path;
String archivoBase64 = await _repository.getArchivoBase64FromMensaje({'id': data['comentario']['id']});
await File('$dir/${data['comentario']['texto']}').writeAsBytes(base64.decode(archivoBase64).buffer.asUint8List());
await OpenFile.open('$dir/${data['comentario']['texto']}');
Run Code Online (Sandbox Code Playgroud)

OpenFile.open()功能完成了预期的功能,当它是pdf时,它显示的软件选项,或者仅使用默认的图片查看器显示图像。

重要信息:我使用base64,因为此聊天中的文件是私有文件(票据,与银行相关的文件...),因此,例如由于它们位于服务器的私有文件夹中,因此无法从浏览器访问它们。

我正在使用以下库:

  • path_provider:^ 0.5.0 + 1(用于获取文件或文件夹的路径)
  • open_file:1.2.2(用于打开保存的文件)

更新

我已经尝试过使用iOS(iphone 8 iOS 12.2)和我的个人电话(samsung s8plus android 9),它可以完美地工作。我一直在尝试的手机是android 6的huawei p8 lite。我将继续进行更多测试,以查看错误是否是该款特定手机,android版本等。

更新2

我以某种方式解决了它。我将flutter项目迁移到AndroidX,然后将所有flutter包依赖项更新为最新版本。我不知道这是否是解决问题的方法,但是现在我可以从android 6设备打开这些文件了。欢呼!

pdf base64 image flutter

5
推荐指数
0
解决办法
343
查看次数

标签 统计

flutter ×2

base64 ×1

dart ×1

image ×1

pdf ×1