如何使用路径提供程序包将颤动屏幕截图保存到我的桌面

Posted

技术标签:

【中文标题】如何使用路径提供程序包将颤动屏幕截图保存到我的桌面【英文标题】:How do save flutter screenshot to my desktop using path provider package 【发布时间】:2021-11-17 17:55:29 【问题描述】:

我正在开发一个带有颤振桌面的程序,它截取一个小部件,并将其保存到桌面。我已经能够截取屏幕截图,我的问题是如何使用 path_provider 包将屏幕截图保存到我的桌面

这是我为获取路径而编写的代码

 Future<String> getFilePath() async 
Directory appDocumentsDirectory =
    await getApplicationDocumentsDirectory(); // 1
String appDocumentsPath = appDocumentsDirectory.path; // 2
String filePath = '$appDocumentsPath/image.png'; // 3

return filePath;
  

这是屏幕截图逻辑的代码,我将我的主要代码包装在屏幕截图小部件中

  ElevatedButton(
              onPressed: () 
               
                screenshotController
                    .capture(delay: Duration(milliseconds: 10))
                    .then((capturedImage) async 
                  ShowCapturedWidget(context, capturedImage!);
                ).catchError((onError) 
                  print(onError);
                );
              ,
              child: Text(_message)),
        ],
      ),
    ),
  ),
);


Future<dynamic> ShowCapturedWidget(
  BuildContext context, Uint8List capturedImage) 
return showDialog(
  useSafeArea: false,
  context: context,
  builder: (context) => Scaffold(
    appBar: AppBar(
      title: Text("Captured widget screenshot"),
    ),
    body: Center(
        child: capturedImage != null
            ? Image.memory(capturedImage)
            : Container()),
  ),
);

如何将捕获的图像保存到我的桌面,或者如何将其作为邮件自动发送。

【问题讨论】:

看看这个thread 这里有两个问题。如何作为电子邮件的附件发送需要明确;要使用哪些 pub 包。我已经用下面的一些假设回答了这两个问题。 【参考方案1】:

假设您正在使用包screenshotflutter_email_sender

if (capturedImage != null) 
  final imagePath = await File(await getFilePath()).create();
  await imagePath.writeAsBytes(capturedImage);
  final Email email = Email(
    body: 'Email body',
    subject: 'Email subject',
    recipients: ['example@example.com'],
    cc: ['cc@example.com'],
    bcc: ['bcc@example.com'],
    attachmentPaths: [imagePath],
    ishtml: false,
  );

  await FlutterEmailSender.send(email);

【讨论】:

以上是关于如何使用路径提供程序包将颤动屏幕截图保存到我的桌面的主要内容,如果未能解决你的问题,请参考以下文章

更改 iOS 模拟器保存的屏幕截图的位置

如何在颤动中截取屏幕之外的小部件屏幕截图?

如何使用 BLoC 在颤动的屏幕之间传递数据?

Mac终端修改文稿文件夹位置

delphi不用getdc如何屏幕截图

如何将电脑截图保存到文件里面去呢?