Операция исключения процесса не разрешена, когда я пытаюсь выполнить команду в моем приложении Flutter
Я получил исключение при попытке выполнить команду.
Я использую youtubedr . Это приложение предназначено для загрузки видео с YouTube. Я уже тестировал его в терминале, и он работает без сбоев.
И я уже попробовалawait Process.start('ls',['-la', 'Downloads']);
в приложении Flutter и у него нетOperation not permitted
ошибка.
Я использую MacOS 13.4.1 (c), и это моя версия Flutter.
Flutter 3.10.6 • channel stable • https://github.com/flutter/flutter.git
Framework • revision f468f3366c (6 weeks ago) • 2023-07-12 15:19:05 -0700
Engine • revision cdbeda788a
Tools • Dart 3.0.6 • DevTools 2.23.1
Это мой код Flutter
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
class HomeView extends StatefulWidget {
const HomeView({super.key});
@override
State<HomeView> createState() => _HomeViewState();
}
class _HomeViewState extends State<HomeView> {
String outputText = ''; // To store output information
double downloadProgress = 0.0;
Future<void> downloadVideo() async {
String command = "/opt/homebrew/bin/youtubedr";
List<String> arguments = [
'download',
// '-d Downloads',
'-o xuxong.mp3',
'-q 140' ,
'https://www.youtube.com/watch\?v\=j6wNBRaoBtc\&t\=1444s',
];
Process process = await Process.start(command, arguments);
// Capture standard output and error streams
process.stdout.transform(utf8.decoder).listen((data) {
setState(() {
outputText += data; // Append output to the existing text
});
});
// Wait for the process to complete
int exitCode = await process.exitCode;
if (exitCode == 0) {
print('Download successful');
} else {
print('Download failed');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text("Youtube Downloader"),
),
body: Container(
margin: const EdgeInsets.all(16.0),
child: Center(
child: Column(
children: [
LinearProgressIndicator(value: downloadProgress),
SizedBox(
width: double.infinity,
height: 400,
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
physics: AlwaysScrollableScrollPhysics(),
child: Column(
children: <Widget>[
Text(outputText),
],
),
controller: ScrollController(keepScrollOffset: false),
),
),
ElevatedButton(
onPressed: downloadVideo,
child: const Text('Download'),
),
],
),
),
),
);
}
}