【Flutter&Dart】 拖动边界线改变列宽类似 vscode 那种拖动改变编辑框窗口大小(11 /100)

【Flutter&Dart】 拖动改变 widget 的窗口尺寸大小GestureDetector~简单实现(10 /100)
【Flutter&Dart】 拖动边界线改变列宽并且有边界高亮和鼠标效果(12 /100)

上效果:

这个在知乎里找到的效果,感觉很不错就给抄过来实现一下。

上代码:

dart 复制代码
import 'package:flutter/material.dart';

class MyDraggableViewDemo2 extends StatelessWidget {
  const MyDraggableViewDemo2({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('MyDraggableViewDemo2'),
        ),
        body: DraggableDemo(),
      ),
    );
  }
}

class DraggableDemo extends StatefulWidget {
  const DraggableDemo({super.key});

  @override
  State<StatefulWidget> createState() {
    return _DraggableDemoState();
  }
}

class _DraggableDemoState extends State<DraggableDemo> {
  double leftWidth = 100.0;
  double height = 200.0;
  bool isResizing = false;

  @override
  Widget build(BuildContext context) {
    return Row(children: [
      // 使用 SizedBox 组件来指定左边的组件的宽度
      SizedBox(
        width: leftWidth,
        child: Container(
          color: Colors.blue,
          child: Center(child: Text('左侧菜单')),
        ),
      ),

// 使用 GestureDetector 组件来包裹分割线
      GestureDetector(
        // 监听水平方向的拖拽操作
        onHorizontalDragUpdate: (details) {
          // 获取拖拽的距离
          double delta = details.delta.dx;
          // 更新左边的组件的宽度
          leftWidth += delta;
          // 限制左边的组件的宽度在 0 到屏幕宽度之间
          leftWidth = leftWidth.clamp(0.0, MediaQuery.of(context).size.width);
          // 重绘组件
          setState(() {});
        },
        child: VerticalDivider(
          width: 16,
          thickness: 4,
          color: Colors.black,
        ),
      ),
      // 使用 Expanded 组件来包裹右边的组件
      Expanded(
        child: Container(
          color: Colors.red,
          child: Center(child: Text('右侧工作区')),
        ),
      ),
    ]);
  }
}

功能上符合要求了,但是交互效果上还是需要在进行细微调整的

比如鼠标停留后的高亮分割线,感觉是停留超过两秒才出现的,滑过不会出现

还有左右可拖动的鼠标剪头等等

===========END

相关推荐
晚霞的不甘3 分钟前
Flutter for OpenHarmony《智慧字典》中的沉浸式学习:成语测试与填空练习等功能详解
学习·flutter·ui·信息可视化·前端框架·鸿蒙
花卷HJ13 分钟前
Flutter加载弹窗使用问题及解决方案
flutter
ujainu28 分钟前
#Flutter + OpenHarmony高保真秒表 App 实现:主副表盘联动、计次记录与主题适配全解析
flutter
Clarice__31 分钟前
VScode上的python使用教程
vscode·python·conda
向哆哆36 分钟前
Flutter × OpenHarmony 跨端实战:打造“智能垃圾分类助手”的快速分类入口模块
flutter·开源·鸿蒙·openharmony
时光慢煮37 分钟前
构建跨端驾照学习助手:Flutter × OpenHarmony 的用户信息与驾照状态卡片实现
学习·flutter·开源·openharmony
向哆哆43 分钟前
Flutter × OpenHarmony 跨端实战:垃圾分类应用顶部横幅组件的设计与实现
flutter·鸿蒙·openharmony·开源鸿蒙
微祎_44 分钟前
Flutter for OpenHarmony:构建一个专业级 Flutter 番茄钟,深入解析状态机、定时器管理与专注力工具设计
开发语言·javascript·flutter
一起养小猫1 小时前
Flutter for OpenHarmony多媒体功能开发完全指南
数码相机·flutter
独处东汉1 小时前
freertos开发空气检测仪之输入子系统按键驱动测试
android·java·数据库