最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter實(shí)現(xiàn)懸浮分組列表功能

 更新時(shí)間:2024年08月19日 09:24:18   作者:一笑輪回~  
這篇文章主要介紹了Flutter-實(shí)現(xiàn)懸浮分組列表,我們將介紹如何使用 Flutter 實(shí)現(xiàn)一個(gè)帶有分組列表的應(yīng)用程序,我們將通過(guò) CustomScrollView 和 Sliver 組件來(lái)實(shí)現(xiàn)該功能,需要的朋友可以參考下

在本篇博客中,我們將介紹如何使用 Flutter 實(shí)現(xiàn)一個(gè)帶有分組列表的應(yīng)用程序。我們將通過(guò) CustomScrollViewSliver 組件來(lái)實(shí)現(xiàn)該功能。

需求

我們需要實(shí)現(xiàn)一個(gè)分組列表,分組包含固定的標(biāo)題和若干個(gè)列表項(xiàng)。具體分組如下:

  • 水果
  • 動(dòng)物
  • 職業(yè)
  • 菜譜

每個(gè)分組包含若干個(gè)項(xiàng)目,例如水果組包含蘋(píng)果、香蕉等。

效果

實(shí)現(xiàn)思路

  • 定義數(shù)據(jù)模型:創(chuàng)建 ItemBean 類來(lái)表示每個(gè)分組的數(shù)據(jù)。
  • 構(gòu)建主頁(yè)面:使用 CustomScrollViewSliver 組件構(gòu)建主頁(yè)面,其中包含多個(gè)分組。
  • 實(shí)現(xiàn)固定標(biāo)題:通過(guò)自定義 SliverPersistentHeaderDelegate 實(shí)現(xiàn)固定標(biāo)題。

實(shí)現(xiàn)代碼

以下是實(shí)現(xiàn)代碼:

import 'package:flutter/material.dart';
/// 數(shù)據(jù)源 
/// https://github.com/yixiaolunhui/flutter_xy
class ItemBean {
  final String groupName;
  final List<String> items;
  const ItemBean({required this.groupName, this.items = const []});
  static List<ItemBean> get groupListData => const [
    ItemBean(groupName: '水果', items: [
      '蘋(píng)果', '香蕉', '橙子', '葡萄', '芒果', '梨', '桃子', '草莓', '西瓜', '檸檬',
      '菠蘿', '櫻桃', '藍(lán)莓', '獼猴桃', '李子', '柿子', '杏', '楊梅', '石榴', '木瓜'
    ]),
    ItemBean(groupName: '動(dòng)物', items: [
      '狗', '貓', '獅子', '老虎', '大象', '熊', '鹿', '狼', '狐貍', '猴子',
      '企鵝', '熊貓', '袋鼠', '海豚', '鯊魚(yú)', '斑馬', '長(zhǎng)頸鹿', '鱷魚(yú)', '孔雀', '烏龜'
    ]),
    ItemBean(groupName: '職業(yè)', items: [
      '醫(yī)生', '護(hù)士', '教師', '工程師', '程序員', '律師', '會(huì)計(jì)', '警察', '消防員', '廚師',
      '司機(jī)', '飛行員', '科學(xué)家', '記者', '設(shè)計(jì)師', '作家', '演員', '音樂(lè)家', '畫(huà)家', '攝影師'
    ]),
    ItemBean(groupName: '菜譜', items: [
      '紅燒肉', '糖醋排骨', '宮保雞丁', '麻婆豆腐', '魚(yú)香肉絲', '酸辣湯', '蒜蓉菠菜', '回鍋肉', '水煮魚(yú)', '烤鴨',
      '蛋炒飯', '蠔油生菜', '紅燒茄子', '西紅柿炒雞蛋', '油燜大蝦', '香菇雞湯', '酸菜魚(yú)', '麻辣香鍋', '鐵板牛肉', '干煸四季豆'
    ]),
  ];
}
/// 分組列表
class GroupListPage extends StatelessWidget {
  const GroupListPage({super.key});
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('分組列表')),
      body: CustomScrollView(
        slivers: ItemBean.groupListData.map(_buildGroup).toList(),
      ),
    );
  }
  Widget _buildGroup(ItemBean itemBean) {
    return SliverMainAxisGroup(
      slivers: [
        SliverPersistentHeader(
          pinned: true,
          delegate: HeaderDelegate(itemBean.groupName),
        ),
        SliverList(
          delegate: SliverChildBuilderDelegate(
            (_, index) => _buildItemByUser(itemBean.items[index]),
            childCount: itemBean.items.length,
          ),
        ),
      ],
    );
  }
  Widget _buildItemByUser(String item) {
    return Container(
      alignment: Alignment.center,
      height: 50,
      child: Row(
        children: [
          const Padding(
            padding: EdgeInsets.only(left: 20, right: 10.0),
            child: FlutterLogo(size: 30),
          ),
          Text(
            item,
            style: const TextStyle(fontSize: 16),
          ),
        ],
      ),
    );
  }
}
class HeaderDelegate extends SliverPersistentHeaderDelegate {
  final String title;
  const HeaderDelegate(this.title);
  @override
  Widget build(
      BuildContext context, double shrinkOffset, bool overlapsContent) {
    return Container(
      alignment: Alignment.centerLeft,
      color: Colors.grey,
      padding: const EdgeInsets.only(left: 20),
      height: 40,
      child: Text(title, style: const TextStyle(fontSize: 16)),
    );
  }
  @override
  double get maxExtent => 40;
  @override
  double get minExtent => 40;
  @override
  bool shouldRebuild(covariant HeaderDelegate oldDelegate) {
    return title != oldDelegate.title;
  }
}

通過(guò)以上代碼,我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的 Flutter 分組列表應(yīng)用。每個(gè)分組都有固定的標(biāo)題,點(diǎn)擊標(biāo)題可以展開(kāi)或收起組內(nèi)的項(xiàng)目。希望這篇博客對(duì)你有所幫助!
詳情 :github.com/yixiaolunhui/flutter_xy

到此這篇關(guān)于Flutter-實(shí)現(xiàn)懸浮分組列表的文章就介紹到這了,更多相關(guān)Flutter懸浮分組列表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android 中使用RecyclerView實(shí)現(xiàn)底部翻頁(yè)

    Android 中使用RecyclerView實(shí)現(xiàn)底部翻頁(yè)

    這篇文章主要介紹了Android 中使用RecyclerView實(shí)現(xiàn)底部翻頁(yè)功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-11-11
  • Android 個(gè)人理財(cái)工具一:項(xiàng)目概述與啟動(dòng)界面的實(shí)現(xiàn)

    Android 個(gè)人理財(cái)工具一:項(xiàng)目概述與啟動(dòng)界面的實(shí)現(xiàn)

    本文主要介紹Android 開(kāi)發(fā)個(gè)人理財(cái)工具項(xiàng)目概述與啟動(dòng)界面的實(shí)現(xiàn),這里主要對(duì)實(shí)現(xiàn)項(xiàng)目的流程做了詳細(xì)概述,并對(duì)啟動(dòng)界面簡(jiǎn)單實(shí)現(xiàn),有需要的小伙伴可以參考下
    2016-08-08
  • Android AIDL實(shí)現(xiàn)兩個(gè)APP間的跨進(jìn)程通信實(shí)例

    Android AIDL實(shí)現(xiàn)兩個(gè)APP間的跨進(jìn)程通信實(shí)例

    這篇文章主要為大家詳細(xì)介紹了Android AIDL實(shí)現(xiàn)兩個(gè)APP間的跨進(jìn)程通信實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 詳解Android開(kāi)發(fā)之MP4文件轉(zhuǎn)GIF文件

    詳解Android開(kāi)發(fā)之MP4文件轉(zhuǎn)GIF文件

    這篇文章介紹的是將錄下來(lái)的視頻選取一小段轉(zhuǎn)為 GIF 文件,不僅時(shí)間段可以手動(dòng)選取,而且還需要支持截取視頻的局部區(qū)域轉(zhuǎn)為 GIF,網(wǎng)上調(diào)研了一下技術(shù)方案,覺(jué)得還是有必要把實(shí)現(xiàn)過(guò)程拿出來(lái)分享下,有需要的可以直接拿過(guò)去用。下面來(lái)一起看看。
    2016-08-08
  • Android Flutter自適應(yīng)瀑布流案例詳解

    Android Flutter自適應(yīng)瀑布流案例詳解

    這篇文章主要介紹了Android Flutter自適應(yīng)瀑布流案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Android實(shí)現(xiàn)通訊錄功能

    Android實(shí)現(xiàn)通訊錄功能

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)通訊錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • android實(shí)現(xiàn)倒計(jì)時(shí)功能的方法

    android實(shí)現(xiàn)倒計(jì)時(shí)功能的方法

    這篇文章主要為大家詳細(xì)介紹了兩種android實(shí)現(xiàn)倒計(jì)時(shí)功能的方法,具有一定的實(shí)用性,感興趣的小伙伴們可以參考一下
    2016-08-08
  • android10 隱藏SystemUI鎖屏下的多用戶圖標(biāo)的示例代碼

    android10 隱藏SystemUI鎖屏下的多用戶圖標(biāo)的示例代碼

    這篇文章主要介紹了android10 隱藏SystemUI鎖屏下的多用戶圖標(biāo),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • android 自定義Android菜單背景的代碼

    android 自定義Android菜單背景的代碼

    如何自定義Android菜單背景呢? 默認(rèn)的情況下Android系統(tǒng)的菜單是白色的,下面的例子可以通過(guò)自定義的xml布局實(shí)現(xiàn)個(gè)性化的menu
    2013-01-01
  • 基于Flutter制作一個(gè)心碎動(dòng)畫(huà)特效

    基于Flutter制作一個(gè)心碎動(dòng)畫(huà)特效

    這篇文章主要為大家介紹了如何利用Flutter制作一個(gè)心碎動(dòng)畫(huà)特效,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Flutter有一定幫助,感興趣的可以了解一下
    2022-04-04

最新評(píng)論

刚察县| 丰宁| 监利县| 宁德市| 普兰店市| 阿拉善右旗| 长泰县| 黑龙江省| 滨海县| 高陵县| 北票市| 泰安市| 灯塔市| 邵阳县| 武邑县| 凤阳县| 大邑县| 峨山| 临高县| 镶黄旗| 宁津县| 增城市| 龙山县| 隆回县| 惠安县| 万盛区| 武威市| 留坝县| 射洪县| 渭南市| 大港区| 怀安县| 清水河县| 鄂伦春自治旗| 松滋市| 嫩江县| 榆中县| 天水市| 桐城市| 梁河县| 临洮县|