搜尋分類、套件與程式碼儲存庫

stack_board 封面
套件詳情v0.2.6+1

stack_board

一個Flutter套件,用於堆疊板,可堆疊並編輯任何組件。

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
151
喜歡數
84
Pub 分數
140

安裝套件

flutter pub add stack_board

套件介紹

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

Stack Board 是一個 Flutter 套件,讓使用者能夠建立和操作可堆疊的可編輯元件。它允許元件分層、重新排序及互動式修改,非常適合需要動態視覺組合的應用程式。此套件支援多種平台,包括 Android、iOS、Web、macOS、Windows 和 Linux,確保廣泛的相容性。專為創意工作流程設計,特別適用於繪圖、繪畫和簽名應用程式,讓使用者能輕鬆管理多個重疊的元素。

適用情境

  • 互動式設計介面
  • 數位簽章工具
  • 分層繪圖應用
  • 多媒體合成
  • 基於組件的編輯工作流程

主要特色

  • 可堆疊且可重新排序的組件
  • 即時小工具編輯
  • 跨平台支援
  • 靈活的組件整合
  • 互動式圖層管理

適合對象

  • 設計人員創建分層UI
  • 開發互動式繪圖工具的開發者
  • 需要多層編輯的應用程式
  • 帶有視覺組件的教育或創意應用程式
  • 需要可自定義小部件排列的使用者

使用建議

  • 需要仔細的狀態管理來處理複雜的堆疊
  • 效能可能會隨著堆疊的組件數量增加而有所差異
  • 最適合中等複雜度的使用案例
  • 可能需要自定義邏輯來處理高級互動
  • 內建樣式選項有限,僅限基本堆疊

原始 README

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

Stack Board

A Flutter package of custom stack board.

pub package GitHub stars GitHub forks CodeFactor FlutterCandies


Try it: Demo


1.使用 StackBoardController


import 'package:stack_board/stack_board.dart';

StackBoard(
    controller: _boardController,
    ///添加背景
    background: const ColoredBox(color: Colors.grey),
),
添加自适应文本


_boardController.add(
    const AdaptiveText(
        'Flutter Candies',
        tapToEdit: true,
        style: TextStyle(fontWeight: FontWeight.bold),
    ),
);

添加自适应图片


_boardController.add(
    StackBoardItem(
        child: Image.network('https://avatars.githubusercontent.com/u/47586449?s=200&v=4'),
    ),
);

添加画板


_boardController.add(
    const StackDrawing(
        caseStyle: CaseStyle(
            borderColor: Colors.grey,
            iconColor: Colors.white,
            boxAspectRatio: 1,
        ),
    ),
);

添加自定义item


1.继承自 StackItemContent 和 StackItem

class ColorContent extends StackItemContent {
  ColorContent({required this.color});

  Color color;

  @override
  Map<String, dynamic> toJson() {
    return <String, dynamic>{
      'color': color.value,
    };
  }
}

class ColorStackItem extends StackItem<ColorContent> {
  ColorStackItem({
    required Size size,
    String? id,
    Offset? offset,
    double? angle,
    StackItemStatus? status,
    ColorContent? content,
  }) : super(
          id: id,
          size: size,
          offset: offset,
          angle: angle,
          status: status,
          content: content,
        );

  @override
  ColorStackItem copyWith({
    Size? size,
    Offset? offset,
    double? angle,
    StackItemStatus? status,
    ColorContent? content,
  }) {
    return ColorStackItem(
      id: id, // <= must !!
      size: size ?? this.size,
      offset: offset ?? this.offset,
      angle: angle ?? this.angle,
      status: status ?? this.status,
      content: content ?? this.content,
    );
  }
}

2.使用controller添加

import 'dart:math' as math;

...

/// Add custom item
void _addCustomItem() {
    final Color color = Colors.primaries[Random().nextInt(Colors.primaries.length)];
    _boardController.addItem(
        ColorStackItem(
        size: const Size.square(100),
        content: ColorContent(color: color),
        ),
    );
}

3.使用customBuilder构建

StackBoard(
    controller: _boardController,
        /// 如果使用了继承于StackBoardItem的自定义item
        /// 使用这个接口进行重构
      customBuilder: (StackItem<StackItemContent> item) {
          if (...) {

           ...

          } else if (item is ColorStackItem) {
            return Container(
              width: item.size.width,
              height: item.size.height,
              color: item.content?.color,
            );
          }

          ...
        },
)

所屬分類

依賴

依賴清單 2 項

原始碼儲存庫

使用此套件的專案

暫無相關資料。