Операция исключения процесса не разрешена, когда я пытаюсь выполнить команду в моем приложении 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'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

0 ответов

Другие вопросы по тегам