【问题标题】:Flutter Image gallery saver - how to access pathFlutter 图片库保护程序 - 如何访问路径
【发布时间】:2021-03-28 03:22:44
【问题描述】:

我正在使用Image gallery saver 插件来保存图像。方法

await ImageGallerySaver.saveImage(pngBytes)

返回一个对象

{filePath: file:///storage/emulated/0/wallpapers/1608205629471.jpg, errorMessage: null, isSuccess: true}

我想获取新保存文件的路径 (/storage/emulated/0/wallpapers/1608205629471.jpg)。

有没有办法做到这一点?

【问题讨论】:

标签: flutter dart flutter-plugin flutter-image flutter-file


【解决方案1】:

这是一个Map 对象。像这样访问文件路径String

var response = await ImageGallerySaver.saveImage(pngBytes);

// value = json['key']
var path = response['filePath']; // 'file:///storage/emulated/0/wallpapers/1608205629471.jpg'

【讨论】:

  • 我认为这是一种不好的做法?您不应该通过某种方法访问它吗?另外,我应该只删除“file://”部分并取出字符串的其余部分吗?
  • 这不是坏习惯。它是一个 Object 因为在 Dart 中一切都是一个 Object。它实际上是 Dart 中的原始类型(如 intdoublebool 等)。这就是您访问其值的方式。是的,如果需要,只需使用 substring 删除 'file://'。
  • 太好了,非常感谢您的解释。我也不知道它是原始类型。希望我能尽快赶上火车。感谢您的耐心等待。
【解决方案2】:

您可以从这样的地图中访问密钥

final imagePath = result['filePath'].toString();

那么如果您需要使用正则表达式删除file:// 的位置路径

final imagePath = result['filePath'].toString().replaceAll(RegExp('file://'), '');

read documentation for more info

【讨论】:

    【解决方案3】:

    首先,您需要与要检索的数据库中的图像 ID 相同。

    然后用这个方法传递 id,我给出了一个我用过的 sn-p:

    import 'package:path/path.dart' as p;
    Directory _appDocsDir;
            class ImageCashUtil {
          ImageCashUtil() {
            init();
          }
          init() async {
            WidgetsFlutterBinding.ensureInitialized();
            _appDocsDir = await getApplicationDocumentsDirectory();
            return _appDocsDir;
          }
        
          File fileFromDocsDir(String filename) {
            String pathName = p.join(_appDocsDir.path, filename);
            return File(pathName);
          }
        }
    

    【讨论】:

    • 感谢您的回复。我想知道是否有另一种方法,不需要你给它自己的文件名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多