iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Flutter折叠控件使用方法详解
  • 393
分享到

Flutter折叠控件使用方法详解

2024-04-02 19:04:59 393人浏览 泡泡鱼
摘要

本文实例为大家分享了Flutter折叠控件使用的具体代码,供大家参考,具体内容如下 1.官方折叠控件ExpansionTiles 官方默认提供了一个折叠控件 ExpansionTil

本文实例为大家分享了Flutter折叠控件使用的具体代码,供大家参考,具体内容如下

1.官方折叠控件ExpansionTiles

官方默认提供了一个折叠控件 ExpansionTiles 主要用于listView做折叠和展开操作的,先来看看一般的用法

Widget _buildTiles(Entry root) {
    return new ExpansionTile(
      title: new Text(root.title),
      children: root.children.map(_buildTiles).toList(),
    );
  }

title 一般就是点击的标题,可以是任意的Widget

children 是折叠和展开的List

使用很方便

2.自定义折叠控件ExpansionLayout

由于项目中的使用到的折叠控件是由外部Widget控制的,涉及到一些业务逻辑,使用官方控件ExpansionTiles,存在诸多不便,于是查看ExpansionTiles ,根据ExpansionTiles源码做自己的修改,主要是根据外部传入的字段来控制展开和折叠

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

const Duration _kExpand = Duration(milliseconds: 200);

class ExpansionLayout extends StatefulWidget {
  const ExpansionLayout({
    Key key,
    this.backgroundColor,
    this.onExpansionChanged,
    this.children = const <Widget>[],
    this.trailing,
    this.isExpanded,
  }) : super(key: key);

  final ValueChanged<bool> onExpansionChanged;
  final List<Widget> children;

  final Color backgroundColor;
  //增加字段控制是否折叠
  final bool isExpanded;

  final Widget trailing;

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

class _ExpansionLayoutState extends State<ExpansionLayout>
    with SingleTickerProviderStateMixin {
//折叠展开的动画,主要是控制height
  static final Animatable<double> _easeInTween =
      CurveTween(curve: Curves.easeIn);
  AnimationController _controller;
  Animation<double> _heightFactor;

  bool _isExpanded;

  @override
  void initState() {
    super.initState();
    //初始化控制器以及出事状态
    _controller = AnimationController(duration: _kExpand, vsync: this);
    _heightFactor = _controller.drive(_easeInTween);
    _isExpanded = widget.isExpanded;
    if (_isExpanded) _controller.value = 1.0;
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  void _handleTap() {
    setState(() {
      _isExpanded = widget.isExpanded;
      if (_isExpanded) {
        _controller.forward();
      } else {
        _controller.reverse().then<void>((void value) {
          if (!mounted) return;
        });
      }
      //保存页面数据
      PageStorage.of(context)?.writeState(context, _isExpanded);
    });
    //回调展开事件
    if (widget.onExpansionChanged != null)
      widget.onExpansionChanged(_isExpanded);
  }

  Widget _buildChildren(BuildContext context, Widget child) {
    return Container(
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          ClipRect(
            child: Align(
              heightFactor: _heightFactor.value,
              child: child,
            ),
          ),
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    //执行以下对应的Tap事件
    _handleTap();
    final bool closed = !_isExpanded && _controller.isDismissed;
    return AnimatedBuilder(
      animation: _controller.view,
      builder: _buildChildren,
      child: closed ? null : Column(children: widget.children),
    );
  }
}

原理其实很简单,就是根据字段_isExpanded 来控制折叠和展开,内部使用动画实现对height的控制

Flutter 目前生态资源还是很缺乏,很多需要自定义,一般根据系统相关的控件做修改,是最好的

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Flutter折叠控件使用方法详解

本文链接: https://www.lsjlt.com/news/163267.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Flutter折叠控件使用方法详解
    本文实例为大家分享了Flutter折叠控件使用的具体代码,供大家参考,具体内容如下 1.官方折叠控件ExpansionTiles 官方默认提供了一个折叠控件 ExpansionTil...
    99+
    2024-04-02
  • C#折线图控件使用方法详解
    本文实例为大家分享了C#编写折线图控件的具体代码,供大家参考,具体内容如下 简单解说 这是第一次写博客,也是第一次发布自己写代码,有不足之处请多见谅。源代码参考了网络搜索到的一些资源...
    99+
    2024-04-02
  • Flutter投票组件使用方法详解
    本文实例为大家分享了Flutter投票组件的使用方法,供大家参考,具体内容如下 前景 基于公司项目需求,仿照微博实现投票功能。 开发遇到的问题 1.选项列表的高度,自适应的问题;2....
    99+
    2024-04-02
  • Flutter滚动组件之ListView使用方法详解
    ListView ListView是最常用的可滚动组件之一,它可以沿一个方向线性排布所有子组件,并且它也支持基于Sliver的延迟构建模型。我们看看ListView的默认构造函数定义...
    99+
    2024-04-02
  • Android控件AppWidgetProvider使用方法详解
    介绍AppWidgetProvider是Android中提供的用于实现桌面小工具的类,其本质是一个广播,即BroadcastReceiver,在实际的使用中,把AppWidgetProvider当成一个BroadcastReceiver即可...
    99+
    2023-05-30
    android appwidgetprovider pp
  • 怎么使用Flutter叠加组件Stack
    本篇内容介绍了“怎么使用Flutter叠加组件Stack”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!注意:无特殊说明,Flutter版本及...
    99+
    2023-06-04
  • Flutter多选按钮组件Checkbox使用方法详解
    Flutter 中的多选按钮组件有两种,供大家参考,具体内容如下 1. Checkbox 多选按钮,一般用来表现一些简单的信息。 常用属性如下: (1). value  多...
    99+
    2024-04-02
  • Android SearchView搜索控件使用方法详解
    本文实例为大家分享了Android SearchView搜索控件的具体实现代码,供大家参考,具体内容如下 方法介绍 setQueryHint 设置 Hint 的文字内容 setMax...
    99+
    2024-04-02
  • swift表格控件使用方法详解(UITableview)
    本文实例为大家分享了swift表格控件的简单使用,供大家参考,具体内容如下 1、效果图 2、该控件(UITableView) 代码注意的地方: A、ViewController 不...
    99+
    2024-04-02
  • Android基础控件RadioGroup使用方法详解
    RadioGroup是Android中的一个基础控件,用于实现一组单选按钮,同一时间只能选择一个单选按钮。RadioGroup的使用...
    99+
    2023-08-08
    Android
  • ListView下拉列表控件使用方法详解
    本文实例为大家分享了ListView下拉列表控件的使用方法,供大家参考,具体内容如下 ListView列表控件 列表的显示需要三个元素: view 用来显示数据的view适配器 用来...
    99+
    2024-04-02
  • HorizontalScrollView水平滚动控件使用方法详解
    一、简介用法ScrollView大致相同二、方法1)HorizontalScrollView水平滚动控件使用方法在layout布局文件的最外层建立一个HorizontalScrollView控件在HorizontalScrollView控件...
    99+
    2023-05-30
    horizontalscrollview 水平滚动控件
  • 如何只使用CSS创建折叠标题效果的方法
    小编给大家分享一下如何只使用CSS创建折叠标题效果的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!折叠标题是向用户显示重要信息的绝佳解决方案,例如特价优惠和密...
    99+
    2023-06-08
  • Flutter组件--TabBar使用详情(分段控制器)
    TabBar介绍   一个显示水平行选项卡的Widget。 通常创建为 AppBar 的 AppBar.bottom 部分并与 TabBarView 结合使用 在什么情况下使用TabBar 当你的app内容类别比较多的时候,我们常常会用到...
    99+
    2023-09-06
    flutter TabController TabBar 分段控制器
  • Flutter组件适配方法实现详解
    目录Flutter 适配组件1. MediaQuery2. LayoutBuilder3. OrientationBuilder4. Expanded 和 Flexible5. Fr...
    99+
    2022-11-13
    Flutter组件适配 Flutter组件 Android Flutter适配组件
  • Android垂直滚动控件ScrollView使用方法详解
    一、简介二、方法1)ScrollView垂直滚动控件使用方法在layout布局文件的最外层建立一个ScrollView控件在ScrollView控件中加入一个LinearLayout控件,并且把它的orientation设置为vertica...
    99+
    2023-05-30
    android 垂直滚动 scrollview
  • android侧滑菜单控件DrawerLayout使用方法详解
    drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。drawerLayout分为侧边菜单和主内...
    99+
    2023-05-30
  • Android中CheckBox复选框控件使用方法详解
    CheckBox复选框控件使用方法,具体内容如下一、简介类结构图二、CheckBox复选框控件使用方法这里是使用java代码在LinearLayout里面添加控件新建LinearLayout布局建立CheckBox的XML的Layout文件...
    99+
    2023-05-30
    checkbox 复选框 roi
  • Android PickerScrollView滑动选择控件使用方法详解
    本文实例为大家分享了Android PickerScrollView滑动选择控件的具体使用代码,供大家参考,具体内容如下 先看一下效果图 1.SelectBean模拟假数...
    99+
    2024-04-02
  • swing分割窗口控件JSplitPane使用方法详解
    本文为大家分享了JSplitPane的使用方法,供大家参考,具体内容如下swing分割窗口控件JSplitPane,用来将窗口分割成两个部分。  分割后的窗口每个窗口只能放一个控件,想要方多个控件的话,可以在上面方一个JPane面板,这样就...
    99+
    2023-05-30
    swing jsplitpane 分割窗口
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作