win_gamepad
A Flutter plugin for Windows for receiving input from game controllers which support XInput. This plugin uses XInput Game Controller API for receiving input from game controllers.
Installation
To use this plugin, add win_gamepad
as a dependency in your pubspec.yaml file.
Usage
Import it
import 'package:win_gamepad/gamepad.dart';
Initialize gamepad
// default id = 0
// default auto vibration = false
Gamepad gamepad = Gamepad();
@override
void initState() {
super.initState();
// initialize gamepad and selects first available device or 0
gamepad.initialize(onCallback: (gamepadState) {
print(gamepadState);
setState(() {});
});
}
Get available gamepad ids
// returns avaible device ids
gamepad.getAvaibleDevices();
Select gamepad
gamepad.selectGamepad(id);
Activate auto vibration
// when auto vibration is true, gamepad vibrates via triggers.
gamepad.setAutoVibration(true);
Vibrate gamepad
// leftMotorSpeed and rightMotorSpeed are should be between 0.0 and 1.0
gamepad.setVibration(leftMotorSpeed, rightMotorSpeed);
For testing there is a gamepad layout
import 'package:win_gamepad/gamepad_layout.dart';
...
GamepadLayout(gamepad: gamepad,)
...
Example
import 'package:flutter/material.dart';
import 'package:win_gamepad/gamepad.dart';
import 'package:win_gamepad/gamepad_layout.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Gamepad gamepad = Gamepad();
@override
void initState() {
super.initState();
gamepad.initialize(onCallback: (gamepadState) {
setState(() {});
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin win_gamepad'),
),
body: Center(
child: Column(
children: [
Opacity(
opacity: 1,
child: GamepadLayout(
gamepad: gamepad,
),
),
],
),
),
),
);
}
}