flutter - dart/flutter 使用 sudo 运行进程

标签 flutter dart flutter-desktop

我想为 mac 桌面开发一个 flutter 应用程序并使用 sudo powermetrics 访问 macs powermetrics有没有办法在第一次运行时向用户询问此命令的 sudo 权限?

最佳答案

嗨,我只是在玩 flutter ,我正在解决同样的问题。
一般来说,我们需要从 bash 调用的 GUI 版本的 sudo。
运行需要 sudo 的 dscacheutil 的 bash commnad 示例:

/usr/bin/osascript -e 'do shell script "dscacheutil -flushcache  2>&1 etc" with administrator privileges'
然后我试图通过 Process.run() 运行这个命令,但没有成功。然后我创建了测试 bash 脚本,并尝试使用 Process.run() 直接运行 bash 脚本。它告诉我然后我没有特权。
所以我不得不在 Xcode 中将我的 App Sandbox 值更改为 NO。
我们必须打开Runner.xcodeproj直接在macos文件夹。
enter image description here
然后将 App Sandbox 更改为 NO:
enter image description here
不,我们必须准备我们的 bash 脚本:
#!/bin/bash
/usr/bin/osascript -e 'do shell script "dscacheutil -flushcache  2>&1 etc" with administrator privileges'
将它保存在某个地方,最后一步我们可以在 Flutter 中调用这个 bash 脚本。
void main() {

      Process.run('/Users/nikix/Desktop/bash_test.sh',[]).then((result){
      stdout.write(result.stdout);
      stderr.write(result.stderr);
      });
}
现在我正在使用 sudo 获得 GUI 提示,它似乎可以工作。但我真的不知道这是否是正确的方法。我在 flutter 方面很新。
更新:
我曾尝试构建 flutter 应用 flutter build macos但无法运行 bash 脚本。然后我找到了this package called process_run
然后我能够从构建的应用程序运行自定义 bash 脚本
在您的 yaml pubspec.yaml 添加该包:
dependencies:
  flutter:
    sdk: flutter
  process_run: any
下一步是允许 Sanbox 应用程序在 xcode 中发布应用程序版本:
enter image description here
最后一步在 Dart 中运行我们的 bash 代码:
import 'package:process_run/shell.dart';
void main() {

  var shell = Shell();

  shell.run("""
    #!/bin/bash
    /usr/bin/osascript -e 'do shell script "dscacheutil -flushcache  2>&1 etc" with administrator privileges'
    """).then((result){
      print('Shell script done!');
    }).catchError((onError) {
      print('Shell.run error!');
      print(onError);
    });
};

关于flutter - dart/flutter 使用 sudo 运行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62270898/

相关文章:

IOS 上的 Flutter 版本停留在 1.0.0

flutter - 使用带有 flutter_bloc 的 Equatable 类

firebase - 如何在 map 列表中向每个 map 添加元素?

php - 我的 PHP/Mysql JSON 输出格式与 flutter 应用程序所需的示例 JSON 页面的格式不同

http - Flutter - http.get 在 macos 构建目标 : Connection failed 上失败

FlutterMap 放大成白屏

arguments - 如何在 Dart 中访问或迭代参数

flutter - 如何在 dart 中增加 DateTime.now

flutter - flutter中是否可以使用Android Studio搭建网站

flutter-desktop - Flutter 桌面 Windows 显示 "No supported devices found"