Flutter网格布局插件apptive_grid_heinzelmen的使用

Flutter网格布局插件apptive_grid_heinzelmen的使用

这些是帮助使用ApptiveGrid Flutter插件的小助手。

Attachment Image

从ApptiveGrid显示附件图像。这包括缩略图的加载逻辑。它还允许仅在不需要全尺寸图像时才加载缩略图。

AttachmentImage(
  attachment: attachment,
  loadingWidget: WidgetToShowWhileLoading(),
  // 仅加载小缩略图和大缩略图
  loadUntil: LoadUntil.large,
),

Configuration Change Notifier

用于根据不同的ApptiveGrid环境提供不同的选项。

_configurationNotifier = ConfigurationChangeNotifier<dynamic>(
    environment: widget.initialEnvironment,
    configurations: {
        ApptiveGridEnvironment.alpha: ApptiveGridEnvironment.alpha,
        ApptiveGridEnvironment.beta: ApptiveGridEnvironment.beta,
        ApptiveGridEnvironment.production: ApptiveGridEnvironment.production,
    },
);

...

return ChangeNotifierProvider.value(
  value: _configurationNotifier,
  child: child,
);

Environment Switcher

一个从ConfigurationChangeNotifier获取信息并显示下拉菜单按钮以切换可用环境的组件。

ListTile(
  title: Text('环境'),
  trailing: EnvironmentSwitcher(
    onChangeEnvironment: (environment) async {
      await _logout();
    },
  ),
),

Stage Banner

一个组合了ChangeNotifier来跟踪设置和Banner Widget来显示当前环境的横幅的组件。注意,这不会在生产环境中显示横幅,仅在beta和alpha环境中显示。

ChangeNotifierProvider(
  create: (_) => EnableBannerNotifier.create(() async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.getBool(PreferencesKeys.enableBanner) ?? true;
  }),
  child: child,
);

...

/// 在更深层次的组件树中
return StageBanner(
  child: child,
);

FormalGermanApptiveGridUserManagementTranslation

适用于ApptiveGridUserManagementTranslations的正式德语翻译。为了使用这些而不是默认的用’DU’称呼用户的字符串,可以在ApptiveGridUserManagement组件中这样添加:

ApptiveGridUserManagement(
    customTranslations: {
        const Locale.fromSubtags(languageCode: 'de'):
            FormalGermanApptiveGridUserManagementTranslation(),
        },
   ...
)

DataWidget

以接近ApptiveGrid Web UI的格式显示数据实体。

const DataWidget(
  data: dataEntity,
),

ProfilePicture

显示ApptiveGrid用户的头像,并在没有图像可用时显示姓名首字母。

const ProfilePicture({
    userId: 'userId',
    name: 'Christian Denker',
  })

InvitationDialog

显示一个对话框邀请某人加入空间。

showSpaceInvitationDialog(context: context, space: space);

可用的角色和邀请方法(邀请、直接添加)可以进行配置,以及所有字符串。更多细节请查看代码文档。

Perform ApptiveLink for ApptiveGrid Objects

一个扩展方法,用于跳过编写自定义响应解析器,当结果是一个ApptiveGrid对象或其列表时执行ApptiveLink。

final client = ApptiveGridClient();

final grids = await client.performApptiveLinkForApptiveGridObject<List<Grid>>(link: gridLink);

可以代替以下代码:

final client = ApptiveGridClient();

final grids = await client.performApptiveLink<List<Grid>>(
  link: gridLink,
  parseResponse: (response) async {
    final jsonList = (jsonDecode(response.body) as Map)['items'] as List;
    return jsonList.map((e) => Grid.fromJson(e)).toList();
  },
);

更多关于Flutter网格布局插件apptive_grid_heinzelmen的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter网格布局插件apptive_grid_heinzelmen的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用apptive_grid_heinzelmen插件来实现网格布局的示例代码。这个插件允许你创建灵活且响应式的网格布局。

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

dependencies:
  flutter:
    sdk: flutter
  apptive_grid_heinzelmen: ^最新版本号  # 请替换为最新的版本号

然后运行flutter pub get来获取依赖。

接下来,在你的Dart文件中,你可以使用ApptiveGrid组件来创建网格布局。以下是一个完整的示例代码:

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

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

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

class MyHomePage extends StatelessWidget {
  final List<String> items = List.generate(20, (index) => "Item $index");

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('ApptiveGrid Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: ApptiveGrid<String>(
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 2, // 网格的列数,可以根据需要调整
            crossAxisSpacing: 8.0,
            mainAxisSpacing: 8.0,
          ),
          itemCount: items.length,
          itemBuilder: (context, index) {
            return Card(
              color: Colors.primaries[index % Colors.primaries.length],
              child: Center(
                child: Text(items[index]),
              ),
            );
          },
        ),
      ),
    );
  }
}

解释

  1. 依赖引入:在pubspec.yaml文件中添加apptive_grid_heinzelmen依赖。
  2. MaterialApp:创建一个基本的Flutter应用。
  3. MyHomePage:主页面组件,包含了一个ScaffoldAppBar和主要的网格布局。
  4. ApptiveGrid:核心组件,用于创建网格布局。
    • gridDelegate:定义了网格的布局,这里使用了SliverGridDelegateWithFixedCrossAxisCount,指定了网格的列数和间距。
    • itemCount:网格中的项目数量。
    • itemBuilder:用于构建每个网格项的回调函数。

这个示例创建了一个包含20个项目的网格布局,每个项目都是一个带有文本的卡片,卡片颜色从Colors.primaries中循环选择。你可以根据需要调整网格的列数、间距和每个网格项的内容。

确保你已经正确安装并导入了apptive_grid_heinzelmen插件,然后运行这个示例代码来查看网格布局的效果。

回到顶部