Flutter分屏视图插件based_split_view的使用

发布于 1周前 作者 wuwangju 来自 Flutter

Flutter分屏视图插件based_split_view的使用

介绍

based_split_view 是一个基于 Flutter 的分屏视图小部件,它可以帮助你在大屏幕设备(如 Telegram、QQ 或 Discord)上创建分屏视图。该插件灵感来源于 flutter_split_view

截图

based_split_view

你可以尝试 在线示例应用 来查看效果。

如何使用

  1. 安装 based_split_view

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

    dependencies:
      based_split_view: ^latest_version
    

    然后运行 flutter pub get 来安装依赖。

  2. 使用 BasedSplitView

    下面是一个完整的示例代码,展示了如何在项目中使用 BasedSplitView

    import 'package:flutter/material.dart';
    import 'package:based_split_view/based_split_view.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Based Split View Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
      final GlobalKey leftKey = GlobalKey();
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Based Split View Demo'),
          ),
          body: BasedSplitView(
            navigatorKey: navigatorKey,
            leftWidget: LeftWidget(key: leftKey),
            rightWidget: RightWidget(),
            initialWidth: 300, // 设置初始宽度
            minLeftWidth: 200, // 设置左侧最小宽度
            maxLeftWidth: 400, // 设置左侧最大宽度
            onDragEnd: (details) {
              print('拖动结束: ${details.width}');
            },
            onDragUpdate: (details) {
              print('拖动中: ${details.width}');
            },
            onDragStart: (details) {
              print('开始拖动: ${details.width}');
            },
          ),
        );
      }
    }
    
    class LeftWidget extends StatelessWidget {
      final GlobalKey key;
    
      LeftWidget({required this.key});
    
      @override
      Widget build(BuildContext context) {
        return Container(
          color: Colors.blue[100],
          child: Center(
            child: Text(
              '左侧视图',
              style: TextStyle(fontSize: 24),
            ),
          ),
        );
      }
    }
    
    class RightWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Container(
          color: Colors.grey[100],
          child: Center(
            child: Text(
              '右侧视图',
              style: TextStyle(fontSize: 24),
            ),
          ),
        );
      }
    }
    

更多关于Flutter分屏视图插件based_split_view的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter分屏视图插件based_split_view的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用based_split_view插件来实现分屏视图的示例代码。这个插件允许你在Flutter应用中创建类似于原生操作系统中的分屏布局。

首先,确保你已经在你的pubspec.yaml文件中添加了based_split_view依赖:

dependencies:
  flutter:
    sdk: flutter
  based_split_view: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter项目中使用BasedSplitView来创建一个分屏视图。以下是一个简单的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Split View Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SplitViewScreen(),
    );
  }
}

class SplitViewScreen extends StatefulWidget {
  @override
  _SplitViewScreenState createState() => _SplitViewScreenState();
}

class _SplitViewScreenState extends State<SplitViewScreen> with SingleTickerProviderStateMixin {
  double _dividerPosition = 0.5; // 初始位置,可以根据需要调整

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Split View Demo'),
      ),
      body: BasedSplitView(
        orientation: Axis.horizontal, // 可以是Axis.horizontal或Axis.vertical
        initialPosition: _dividerPosition,
        dividerThickness: 5.0,
        onDividerDragEnd: (double position) {
          setState(() {
            _dividerPosition = position;
          });
        },
        leftView: Container(
          color: Colors.blue,
          child: Center(
            child: Text(
              'Left View',
              style: TextStyle(color: Colors.white),
            ),
          ),
        ),
        rightView: Container(
          color: Colors.green,
          child: Center(
            child: Text(
              'Right View',
              style: TextStyle(color: Colors.white),
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中:

  1. BasedSplitView是一个自定义的分屏视图组件,它允许你指定分屏的方向(水平或垂直)。
  2. initialPosition属性设置初始的分屏位置。
  3. dividerThickness属性设置分隔条的厚度。
  4. onDividerDragEnd回调函数在拖动分隔条结束时被调用,你可以在这里更新分屏的位置。
  5. leftViewrightView属性分别定义了分屏左侧和右侧的视图内容。

运行这个示例代码,你将看到一个简单的分屏视图,其中左侧视图是蓝色的,右侧视图是绿色的,你可以拖动分隔条来调整两个视图的大小。

请注意,based_split_view插件的具体实现和API可能会随着版本更新而变化,因此请参考最新的插件文档和示例代码以确保兼容性。

回到顶部