Flutter Windows应用命令控制插件windows_appcommand的使用

Flutter Windows 应用命令控制插件 windows_appcommand 的使用

pub version

windows_appcommand 是一个为 Flutter 提供 Windows 消息处理功能(特别是 WM_APPCOMMAND 消息)的插件。

安装

在你的 pubspec.yaml 文件中添加依赖:

dependencies:
  windows_appcommand: ^0.0.5

或者通过命令行添加:

$ flutter pub add windows_appcommand

使用

首先,你需要导入必要的包,并实现 AppCommand 接口。以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:windows_appcommand/windows_appcommand.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with AppCommand {
  var list = [];

  [@override](/user/override)
  void initState() {
    super.initState();
    windowsAppCommand.addListener(this);
  }

  [@override](/user/override)
  void dispose() {
    windowsAppCommand.removeListener(this);
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('windows_appcommand 插件示例应用'),
        ),
        body: ListView.separated(
          itemBuilder: (BuildContext context, int index) {
            return ListTile(
              title: Text(
                list[index],
                style: const TextStyle(
                    color: Colors.black,
                    // fontSize: 18.0
                ),
              ),
            );
          },
          separatorBuilder: (BuildContext context, int index) {
            return Container(
              height: 1,
              color: Colors.grey,
            );
          },
          itemCount: list.length,
        ),
      ),
    );
  }

  [@override](/user/override)
  void onBassBoost() {
    setState(() {
      list.add('${DateTime.now()} : onBassBoost APPCOMMAND_BASS_BOOST');
    });
  }

  [@override](/user/override)
  void onBassDown() {
    setState(() {
      list.add('${DateTime.now()} : onBassDown APPCOMMAND_BASS_DOWN');
    });
  }

  [@override](/user/override)
  void onBassUp() {
    setState(() {
      list.add('${DateTime.now()} : onBassUp APPCOMMAND_BASS_UP');
    });
  }

  [@override](/user/override)
  void onBrowserBackward() {
    setState(() {
      list.add('${DateTime.now()} : onBrowserBackward APPCOMMAND_BROWSER_BACKWARD');
    });
  }

  [@override](/user/override)
  void onBrowserFavorites() {
    setState(() {
      list.add('${DateTime.now()} : onBrowserFavorites APPCOMMAND_BROWSER_FAVORITES');
    });
  }

  [@override](/user/override)
  void onBrowserForward() {
    setState(() {
      list.add('${DateTime.now()} : onBrowserForward APPCOMMAND_BROWSER_FORWARD');
    });
  }

  [@override](/user/override)
  void onBrowserHome() {
    setState(() {
      list.add('${DateTime.now()} : onBrowserHome APPCOMMAND_BROWSER_HOME');
    });
  }

  [@override](/user/override)
  void onBrowserRefresh() {
    setState(() {
      list.add('${DateTime.now()} : onBrowserRefresh APPCOMMAND_BROWSER_REFRESH');
    });
  }

  [@override](/user/override)
  void onBrowserSearch() {
    setState(() {
      list.add('${DateTime.now()} : onBrowserSearch APPCOMMAND_BROWSER_SEARCH');
    });
  }

  [@override](/user/override)
  void onBrowserStop() {
    setState(() {
      list.add('${DateTime.now()} : onBrowserStop APPCOMMAND_BROWSER_STOP');
    });
  }

  [@override](/user/override)
  void onClose() {
    setState(() {
      list.add('${DateTime.now()} : onClose APPCOMMAND_CLOSE');
    });
  }

  [@override](/user/override)
  void onCopy() {
    setState(() {
      list.add('${DateTime.now()} : onCopy APPCOMMAND_COPY');
    });
  }

  [@override](/user/override)
  void onCorrectionList() {
    setState(() {
      list.add('${DateTime.now()} : onCorrectionList APPCOMMAND_CORRECTION_LIST');
    });
  }

  [@override](/user/override)
  void onCut() {
    setState(() {
      list.add('${DateTime.now()} : onCut APPCOMMAND_CUT');
    });
  }

  [@override](/user/override)
  void onDictateOrCommandControlToggle() {
    setState(() {
      list.add('${DateTime.now()} : onDictateOrCommandControlToggle APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE');
    });
  }

  [@override](/user/override)
  void onFind() {
    setState(() {
      list.add('${DateTime.now()} : onFind APPCOMMAND_FIND');
    });
  }

  [@override](/user/override)
  void onForwardMail() {
    setState(() {
      list.add('${DateTime.now()} : onForwardMail APPCOMMAND_FORWARD_MAIL');
    });
  }

  [@override](/user/override)
  void onHelp() {
    setState(() {
      list.add('${DateTime.now()} : onHelp APPCOMMAND_HELP');
    });
  }

  [@override](/user/override)
  void onLaunchApp1() {
    setState(() {
      list.add('${DateTime.now()} : onLaunchApp1 APPCOMMAND_LAUNCH_APP1');
    });
  }

  [@override](/user/override)
  void onLaunchApp2() {
    setState(() {
      list.add('${DateTime.now()} : onLaunchApp2 APPCOMMAND_LAUNCH_APP2');
    });
  }

  [@override](/user/override)
  void onLaunchMail() {
    setState(() {
      list.add('${DateTime.now()} : onLaunchMail APPCOMMAND_LAUNCH_MAIL');
    });
  }

  [@override](/user/override)
  void onLaunchMediaSelect() {
    setState(() {
      list.add('${DateTime.now()} : onLaunchMediaSelect APPCOMMAND_LAUNCH_MEDIA_SELECT');
    });
  }

  [@override](/user/override)
  void onMediaChannelDown() {
    setState(() {
      list.add('${DateTime.now()} : onMediaChannelDown APPCOMMAND_MEDIA_CHANNEL_DOWN');
    });
  }

  [@override](/user/override)
  void onMediaChannelUp() {
    setState(() {
      list.add('${DateTime.now()} : onMediaChannelUp APPCOMMAND_MEDIA_CHANNEL_UP');
    });
  }

  [@override](/user/override)
  void onMediaFastForward() {
    setState(() {
      list.add('${DateTime.now()} : onMediaFastForward APPCOMMAND_MEDIA_FAST_FORWARD');
    });
  }

  [@override](/user/override)
  void onMediaNextTrack() {
    setState(() {
      list.add('${DateTime.now()} : onMediaNextTrack APPCOMMAND_MEDIA_NEXTTRACK');
    });
  }

  [@override](/user/override)
  void onMediaPause() {
    setState(() {
      list.add('${DateTime.now()} : onMediaPause APPCOMMAND_MEDIA_PAUSE');
    });
  }

  [@override](/user/override)
  void onMediaPlay() {
    setState(() {
      list.add('${DateTime.now()} : onMediaPlay APPCOMMAND_MEDIA_PLAY');
    });
  }

  [@override](/user/override)
  void onMediaPlayPause() {
    setState(() {
      list.add('${DateTime.now()} : onMediaPlayPause APPCOMMAND_MEDIA_PLAY_PAUSE');
    });
  }

  [@override](/user/override)
  void onMediaPreviousTrack() {
    setState(() {
      list.add('${DateTime.now()} : onMediaPreviousTrack APPCOMMAND_MEDIA_PREVIOUSTRACK');
    });
  }

  [@override](/user/override)
  void onMediaRecord() {
    setState(() {
      list.add('${DateTime.now()} : onMediaRecord APPCOMMAND_MEDIA_RECORD');
    });
  }

  [@override](/user/override)
  void onMediaRewind() {
    setState(() {
      list.add('${DateTime.now()} : onMediaRewind APPCOMMAND_MEDIA_REWIND');
    });
  }

  [@override](/user/override)
  void onMediaStop() {
    setState(() {
      list.add('${DateTime.now()} : onMediaStop APPCOMMAND_MEDIA_STOP');
    });
  }

  [@override](/user/override)
  void onMicOnOffToggle() {
    setState(() {
      list.add('${DateTime.now()} : onMicOnOffToggle APPCOMMAND_MIC_ON_OFF_TOGGLE');
    });
  }

  [@override](/user/override)
  void onMicrophoneVolumeDown() {
    setState(() {
      list.add('${DateTime.now()} : onMicrophoneVolumeDown APPCOMMAND_MICROPHONE_VOLUME_DOWN');
    });
  }

  [@override](/user/override)
  void onMicrophoneVolumeMute() {
    setState(() {
      list.add('${DateTime.now()} : onMicrophoneVolumeMute APPCOMMAND_MICROPHONE_VOLUME_MUTE');
    });
  }

  [@override](/user/override)
  void onMicrophoneVolumeUp() {
    setState(() {
      list.add('${DateTime.now()} : onMicrophoneVolumeUp APPCOMMAND_MICROPHONE_VOLUME_UP');
    });
  }

  [@override](/user/override)
  void onNew() {
    setState(() {
      list.add('${DateTime.now()} : onNew APPCOMMAND_NEW');
    });
  }

  [@override](/user/override)
  void onOpen() {
    setState(() {
      list.add('${DateTime.now()} : onOpen APPCOMMAND_OPEN');
    });
  }

  [@override](/user/override)
  void onPaste() {
    setState(() {
      list.add('${DateTime.now()} : onPaste APPCOMMAND_PASTE');
    });
  }

  [@override](/user/override)
  void onPrint() {
    setState(() {
      list.add('${DateTime.now()} : onPrint APPCOMMAND_PRINT');
    });
  }

  [@override](/user/override)
  void onRedo() {
    setState(() {
      list.add('${DateTime.now()} : onRedo APPCOMMAND_REDO');
    });
  }

  [@override](/user/override)
  void onReplayToMail() {
    setState(() {
      list.add('${DateTime.now()} : onReplayToMail APPCOMMAND_REPLY_TO_MAIL');
    });
  }

  [@override](/user/override)
  void onSave() {
    setState(() {
      list.add('${DateTime.now()} : onSave APPCOMMAND_SAVE');
    });
  }

  [@override](/user/override)
  void onSendMail() {
    setState(() {
      list.add('${DateTime.now()} : onSendMail APPCOMMAND_SEND_MAIL');
    });
  }

  [@override](/user/override)
  void onSpellCheck() {
    setState(() {
      list.add('${DateTime.now()} : onSpellCheck APPCOMMAND_SPELL_CHECK');
    });
  }

  [@override](/user/override)
  void onTrebleDown() {
    setState(() {
      list.add('${DateTime.now()} : onTrebleDown APPCOMMAND_TREBLE_DOWN');
    });
  }

  [@override](/user/override)
  void onTrebleUp() {
    setState(() {
      list.add('${DateTime.now()} : onTrebleUp APPCOMMAND_TREBLE_UP');
    });
  }

  [@override](/user/override)
  void onUndo() {
    setState(() {
      list.add('${DateTime.now()} : onUndo APPCOMMAND_UNDO');
    });
  }

  [@override](/user/override)
  void onVolumeDown() {
    setState(() {
      list.add('${DateTime.now()} : onVolumeDown APPCOMMAND_VOLUME_DOWN');
    });
  }

  [@override](/user/override)
  void onVolumeMute() {
    setState(() {
      list.add('${DateTime.now()} : onVolumeMute APPCOMMAND_VOLUME_MUTE');
    });
  }

  [@override](/user/override)
  void onVolumeUp() {
    setState(() {
      list.add('${DateTime.now()} : onVolumeUp APPCOMMAND_VOLUME_UP');
    });
  }
}

更多关于Flutter Windows应用命令控制插件windows_appcommand的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Windows应用命令控制插件windows_appcommand的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中,windows_appcommand 是一个用于与 Windows 系统进行命令交互的插件。通过这个插件,你可以从 Flutter 应用中执行特定的 Windows 命令,或者获取系统的相关信息。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 windows_appcommand 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  windows_appcommand: ^1.0.0  # 使用最新的版本号

然后运行 flutter pub get 来安装插件。

使用插件

安装完成后,你可以在 Dart 代码中导入并使用 windows_appcommand 插件。

import 'package:windows_appcommand/windows_appcommand.dart';

void main() async {
  // 初始化插件
  final appCommand = WindowsAppCommand();

  // 执行 Windows 命令
  String result = await appCommand.executeCommand('echo Hello, Windows!');
  print(result);  // 输出: Hello, Windows!

  // 获取系统信息
  String systemInfo = await appCommand.getSystemInfo();
  print(systemInfo);  // 输出系统信息
}

常用方法

windows_appcommand 插件提供了以下几种常用的方法:

  1. 执行命令: 你可以通过 executeCommand 方法执行任意的 Windows 命令行命令。

    String result = await appCommand.executeCommand('dir');
    print(result);  // 输出当前目录的文件列表
    
  2. 获取系统信息: 通过 getSystemInfo 方法,你可以获取当前系统的相关信息。

    String systemInfo = await appCommand.getSystemInfo();
    print(systemInfo);  // 输出系统信息
    
  3. 打开文件或文件夹: 你可以使用 openFileOrFolder 方法打开指定的文件或文件夹。

    await appCommand.openFileOrFolder('C:\\path\\to\\file.txt');
    
  4. 执行应用程序: 通过 executeApplication 方法,你可以启动指定的应用程序。

    await appCommand.executeApplication('notepad.exe');
    

注意事项

  1. 权限问题: 某些命令可能需要管理员权限才能执行。如果遇到权限问题,可能需要以管理员身份运行你的 Flutter 应用。
  2. 命令安全性: 在使用 executeCommand 时,确保你执行的命令是安全的,避免执行恶意命令。

示例代码

以下是一个完整的示例代码,展示了如何使用 windows_appcommand 插件执行命令和获取系统信息:

import 'package:flutter/material.dart';
import 'package:windows_appcommand/windows_appcommand.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Windows AppCommand Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () async {
                  final appCommand = WindowsAppCommand();
                  String result = await appCommand.executeCommand('echo Hello, Windows!');
                  print(result);
                },
                child: Text('Execute Command'),
              ),
              ElevatedButton(
                onPressed: () async {
                  final appCommand = WindowsAppCommand();
                  String systemInfo = await appCommand.getSystemInfo();
                  print(systemInfo);
                },
                child: Text('Get System Info'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部