搜索分类、插件与代码仓

插件详情v0.0.2

golden_layout

一个基于 http://golden-layout.com/ 的 Flutter 内部窗口库

近 30 天下载
21
喜欢数
36
Pub 分数
40

安装插件

flutter pub add golden_layout

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

Golden Layout 是一个 Flutter 包,将 Golden Layout 库的强大窗口管理功能带到了 Flutter 应用中。它使开发者能够创建复杂的、可调整大小且可拖动的 UI 布局,支持多个面板、嵌套排列和动态内容。专为内部应用界面设计,非常适合需要自定义工作区的工具,如仪表板、IDE 或数据可视化平台。该包与 Flutter 的小部件系统无缝集成,同时保持高性能和响应性。

适合场景

  • 仪表板界面
  • 类IDE的开发环境
  • 数据可视化工具
  • 多面板报表应用
  • 可自定义的用户工作区

主要特点

  • 可调整大小且可拖动的面板
  • 嵌套布局支持
  • 动态面板排列
  • 对多种内容类型的支援
  • 与 Flutter 小部件的集成

适合对象

  • 开发复杂 UI 的开发者
  • 需要灵活工作区布局的应用程序
  • 需要多面板界面的工具
  • 类桌面 Flutter 应用程序
  • 以UI为主的内部工具

使用建议

  • 未针对移动优先设计进行优化
  • 可用文档有限
  • 可能需要自定义样式以满足高级用例需求
  • 最适合桌面或平板场景
  • 状态管理中的潜在复杂性

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Buy Me A Coffee Donate golden_layout

golden_layout

A Flutter inspired package from http://golden-layout.com/

Demo: https://rodydavis.github.io/golden_layout/

screenshot

Example

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Golden Layout'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final _controller = WindowController();
  int _count = 0;

  @override
  void initState() {
    final _group = WindowGroup();
    _group.addTab(_getTab(_count++));
    (_controller.base as WindowColumn).children.add(_group);
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
        actions: [
          IconButton(
            tooltip: 'Add Window',
            icon: Icon(Icons.restore),
            onPressed: () {
              if (mounted)
                setState(() {
                  _controller.base =
                      WindowColumn([WindowGroup()..addTab(_getTab(_count++))]);
                });
            },
          ),
          IconButton(
            tooltip: 'Add Group',
            icon: Icon(Icons.list),
            onPressed: () {
              if (mounted)
                setState(() {
                  final _group = WindowGroup();
                  _group.addTab(_getTab(_count++));
                  (_controller.base as WindowColumn).children.add(_group);
                });
            },
          ),
          IconButton(
            tooltip: 'Add Row',
            icon: Icon(Icons.category),
            onPressed: () {
              if (mounted)
                setState(() {
                  final _group1 = WindowGroup()..addTab(_getTab(_count++));
                  final _group2 = WindowGroup()..addTab(_getTab(_count++));
                  (_controller.base as WindowColumn)
                      .children
                      .add(WindowRow([_group1, _group2]));
                });
            },
          ),
        ],
      ),
      body: GoldenLayout(
        controller: _controller,
      ),
    );
  }

  WindowTab _getTab(int count) {
    return WindowTab(
        title: 'Window $count',
        child: Container(color: Colors.red[100 * count]));
  }
}

所属分类

源码仓库

使用此插件的项目

暂无相关数据。