搜尋套件、儲存庫與 APP 分類

flutter_joystick 封面
套件詳情v0.2.3

flutter_joystick

適用於 Flutter 應用的虛擬搖桿元件。高度彈性且可自訂。

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
1.1萬
喜歡數
68
Pub 分數
160

安裝套件

flutter pub add flutter_joystick

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個高度靈活且可自訂的虛擬搖桿小工具,專為 Flutter 遊戲開發設計。它能在多個平台(包括 Android、iOS、Web、macOS、Windows 和 Linux)上實現直覺的觸控控制輸入。此小工具支援即時方向反饋,並可輕鬆調整樣式以符合應用程式的美學風格。非常適合 2D 遊戲、模擬器或任何需要類似類比搖桿輸入的應用。其輕量級設計確保即使在低階設備上也能順暢運作。

適用情境

  • 2D手機遊戲
  • 遊戲控制器在網頁應用中
  • 模擬器介面
  • 自定觸控控制
  • 跨平台遊戲開發

主要特色

  • 即時方向輸入
  • 高度可自訂的外觀
  • 跨平台相容性
  • 基於觸控的類比控制
  • 可設定的靈敏度和死區

適合對象

  • 遊戲開發者
  • 互動應用創建者
  • 跨平台專案
  • 需要觸控控制的UI設計師
  • 原型化模擬輸入

使用建議

  • 需要手動處理觸控事件
  • 可能需要額外的邏輯來處理複雜的遊戲機制
  • 自定樣式需要熟悉 Flutter 小部件
  • 性能取決於渲染複雜度
  • 不適用於高頻率輸入場景

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

Flutter Joystick

Pub Version License Pub Likes Monthly Downloads Pub Points Flutter Platform

Buy Me A Coffee PayPal

📢 Follow for updates: t.me/pavelzaichyk_dev

Flutter Joystick is a virtual joystick package for Flutter applications that provides interactive joystick components for user interface design.

See Examples Google Play

Table of Contents

Joystick

Joystick

The Joystick widget is a virtual joystick that allows users to drag a stick within a defined area. You can customize its behavior and appearance. Here's how you can use it:

Joystick(listener: (details) {
...
})

Joystick Arguments:

Parameter Description
listener A callback function that is invoked at a specified frequency (period) when the joystick stick is dragged. The listener parameter, details, provides the stick's offset from the center of the base (ranging from -1.0 to +1.0).
period (Optional) The frequency at which the listener callback is triggered from the moment the stick is dragged. The default is 100 milliseconds.
mode (Optional) The possible direction mode of the joystick stick. The default mode is all, allowing movement in any direction: vertical, horizontal, and diagonal.
includeInitialAnimation (Optional) Decides if the stick's initial movement animation should be included. By default [true].

This information clarifies the purpose and usage of each parameter for the Joystick widget.

Mode Description
all Allows movement of the joystick stick in any direction: vertical, horizontal, and diagonal.
vertical Restricts movement of the joystick stick to the vertical direction only.
horizontal Restricts movement of the joystick stick to the horizontal direction only.
horizontalAndVertical Restricts movement of the joystick stick to both horizontal and vertical directions, but not diagonal.

These modes define how the joystick stick can be moved, providing flexibility in tailoring the joystick's behavior to specific requirements.

Joystick Vertical Joystick Horizontal Joystick Horizontal And Vertical

Joystick Area

Joystick

The JoystickArea widget allows you to render a joystick anywhere within a designated area when the user interacts with it. It shares similar properties with the Joystick widget.

JoystickArea(
  listener: (details) {
    ...
  },
  child: ...
)

Additional JoystickArea Arguments:

Parameter Description
initialJoystickAlignment (Optional) Sets the initial alignment of the joystick within the joystick area. By default, it is aligned to Alignment.bottomCenter.
child (Optional) The widget that is contained within the joystick area, allowing you to place other elements or widgets alongside the joystick.

These arguments provide additional customization options for the JoystickArea widget, allowing you to control the initial alignment and include child widgets for a more versatile user interface.

Customization

Customization Options:

The Joystick and JoystickArea widgets are highly customizable, allowing you to tailor their appearance and behavior to fit your application's unique requirements. Below are the parameters you can adjust:

Parameter Description
base (Optional) The widget responsible for rendering the joystick's base. By default, it uses JoystickBase, but you can replace it with any widget to change its look. For example, you can use a custom image or a different shape.
stick (Optional) The widget that defines the appearance of the joystick stick. It is centered within the base widget. The default is JoystickStick, but you can customize it to be any widget, such as an icon, image, or animated widget.
stickOffsetCalculator (Optional) A function that determines the stick's offset based on the starting position of the stick drag and its current position. The package supports circular and rectangular shapes through CircleStickOffsetCalculator and RectangleStickOffsetCalculator respectively. You can create custom offset calculators for other shapes.

These customization parameters empower you to create distinctive and unique joystick experiences for your Flutter applications.

Snapping Feature:

The joystick supports a snapping feature that helps users by automatically aligning the stick to specific positions. This is controlled by the snappingThreshold parameter in both CircleStickOffsetCalculator and RectangleStickOffsetCalculator.

For circular joysticks (CircleStickOffsetCalculator), snapping occurs to:

  • Cardinal directions (0°, 90°, 180°, 270°)
  • Diagonal directions (45°, 135°, 225°, 315°)
  • The border of the circle when near the edge

For rectangular joysticks (RectangleStickOffsetCalculator), snapping occurs to:

  • The edges of the rectangle
  • The corners of the rectangle
  • The center (zero position)

The snappingThreshold value determines how close to a snap point the stick needs to be to trigger snapping. A value of 0.0 disables snapping, while larger values make snapping more aggressive.

Example usage:

Joystick(
  stickOffsetCalculator: CircleStickOffsetCalculator(snappingThreshold: 0.2),
  listener: (details) {
    // Handle joystick movement
  },
)

Examples:

Code Example
Joystick(
base: JoystickBase(
decoration: JoystickBaseDecoration(
middleCircleColor: Colors.red.shade400,
drawOuterCircle: false,
drawInnerCircle: false,
boxShadowColor: Colors.red.shade100,
),
),
stick: JoystickStick(
decoration: JoystickStickDecoration(
color: Colors.red,
),
),
listener: (details) {..},
)
Red Joystick
Joystick(
base: JoystickBase(
decoration: JoystickBaseDecoration(
color: Colors.black,
drawOuterCircle: false,
),
arrowsDecoration: JoystickArrowsDecoration(
color: Colors.blue,
),
),
listener: (details) {..},
)
Black Joystick
Joystick(
includeInitialAnimation: false,
base: JoystickBase(
decoration: JoystickBaseDecoration(
color: Colors.orange,
),
arrowsDecoration: JoystickArrowsDecoration(
color: Colors.grey,
enableAnimation: false,
),
),
stick: JoystickStick(
decoration: JoystickStickDecoration(
color: Colors.grey,
shadowColor: Colors.white.withOpacity(0.5)
),
),
listener: (details) {..},
)
Orange Joystick
Joystick(
base: JoystickSquareBase(),
stickOffsetCalculator: const RectangleStickOffsetCalculator(),
listener: (details) {..},
)
Square Joystick
Joystick(
stick: const CircleAvatar(
radius: 30,
child: FlutterLogo(size: 50),
),
base: Container(
width: 200,
height: 200,
decoration: const BoxDecoration(
color: Colors.grey,
shape: BoxShape.circle,
),
),
listener: (details) {..},
)
Custom Joystick

These examples highlight the flexibility of the joystick widget and provide a foundation for you to create your own customized joystick designs.

Donate

If you find this package helpful and would like to support its continued development, please consider making a donation. Your contributions are greatly appreciated and motivate the further enhancement of this and other plugins.

Donate Buy Me A Coffee PayPal

Your support helps in maintaining and improving this package, ensuring it remains up-to-date and useful for the community.

Thank you for your generosity!

Contributors

所屬分類

原始碼儲存庫

使用此套件的專案