Flutter主从详情界面插件flutter_master_detail的使用

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

Flutter主从详情界面插件flutter_master_detail的使用

flutter_master_detail简介

flutter_master_detail 是一个简化构建自适应主从视图的 Flutter 包。这是一个相对无偏见的包,允许你在实现过程中自定义主从视图的几乎所有方面。

开始使用

导入包

在你的项目中导入 flutter_master_detail 包:

import 'package:flutter_master_detail/flutter_master_detail.dart';

使用示例

以下是一个完整的示例,展示了如何使用 MasterDetailsList 构建主从界面。

示例代码

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Master Detail Example',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const MasterDetailScreen(),
    );
  }
}

class MasterDetailScreen extends StatelessWidget {
  const MasterDetailScreen({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 示例数据
    final List<String> elementsList = [
      'Apple',
      'Banana',
      'Cherry',
      'Date',
      'Elderberry',
      'Fig',
      'Grape'
    ];

    return MasterDetailsList<String>(
      items: elementsList, // 主视图的数据列表
      masterItemBuilder: (context, data, isSelected) => ListTile(
        title: Text(data),
        selected: isSelected,
        onTap: () {
          // 点击主视图项时触发
          print('Selected item: $data');
        },
      ),
      detailsTitleBuilder: (context, data) => AppBar(
        title: Text('Details for $data'),
      ),
      detailsItemBuilder: (context, data) => Center(
        child: Text('Details of $data', style: TextStyle(fontSize: 20)),
      ),
      sortBy: (data) => data.length, // 按字符串长度排序
      groupedBy: (data) => data[0], // 按首字母分组
      groupHeaderBuilder: (context, data, itemsCount) => Card(
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Text('$data ($itemsCount items)'),
        ),
      ),
      title: const Text('Master View Title'), // 主视图标题
      masterViewFraction: 0.4, // 主视图宽度占比
      nothingSelectedWidget: Center(
        child: Text('Select something from the list'),
      ),
      transitionAnimationDuration: Duration(milliseconds: 500), // 动画持续时间
    );
  }
}

更多关于Flutter主从详情界面插件flutter_master_detail的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter主从详情界面插件flutter_master_detail的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_master_detail 是一个用于在 Flutter 应用中实现主从详情界面(Master-Detail)布局的插件。这种布局通常用于平板或桌面应用,其中左侧显示一个列表(主视图),右侧显示选中项的详细信息(详情视图)。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 flutter_master_detail 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_master_detail: ^1.0.0

然后运行 flutter pub get 来安装插件。

使用 flutter_master_detail

1. 导入插件

import 'package:flutter_master_detail/flutter_master_detail.dart';

2. 创建主从布局

flutter_master_detail 提供了一个 MasterDetailScaffold 组件,你可以使用它来创建主从布局。

class MasterDetailScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MasterDetailScaffold(
      master: MasterView(),
      detail: DetailView(),
    );
  }
}

3. 创建主视图和详情视图

你需要分别创建主视图(MasterView)和详情视图(DetailView)。

class MasterView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: 10,
      itemBuilder: (context, index) {
        return ListTile(
          title: Text('Item $index'),
          onTap: () {
            // 处理点击事件,更新详情视图
            MasterDetailScaffold.of(context)?.setDetail(DetailView(item: index));
          },
        );
      },
    );
  }
}

class DetailView extends StatelessWidget {
  final int item;

  DetailView({required this.item});

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Detail for Item $item'),
    );
  }
}

4. 在应用中使用 MasterDetailScreen

最后,你可以在应用的主页面中使用 MasterDetailScreen

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Master Detail Demo',
      home: MasterDetailScreen(),
    );
  }
}

处理不同屏幕尺寸

flutter_master_detail 插件会自动处理不同屏幕尺寸的布局。在宽屏设备(如平板或桌面)上,主视图和详情视图会并排显示;在窄屏设备(如手机)上,主视图和详情视图会以堆叠的方式显示。

自定义布局

你可以通过 MasterDetailScaffoldbreakpoint 参数来自定义布局的断点,或者通过 masterWidth 参数来设置主视图的宽度。

MasterDetailScaffold(
  master: MasterView(),
  detail: DetailView(),
  breakpoint: 600, // 自定义断点
  masterWidth: 300, // 主视图宽度
);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!