Flutter多功能工具集插件nice_flutter_kit的使用

Flutter多功能工具集插件nice_flutter_kit的使用

Nice flutter kit

pub package

一个包含许多实用小部件的集合。


使用示例

以下是一个完整的示例,展示如何在Flutter应用中使用nice_flutter_kit插件。我们将创建一个具有多页面导航的应用程序,并集成一些常用的实用功能。

示例代码

// 导入必要的库
import "package:device_preview/device_preview.dart";
import "package:example/cubit/app.cubit.dart"; // 示例中的Cubit
import "package:example/cubit/app.state.dart"; // 示例中的状态管理
import "package:example/pages/auth/auth.page.dart"; // 示例中的认证页面
import "package:example/pages/base-list/infinite-scroll-base-list.page.dart"; // 示例中的无限滚动列表
import "package:example/pages/base-list/paginated-base-list.page.dart"; // 示例中的分页列表
import "package:example/pages/home.page.dart"; // 主页
import "package:example/pages/onboarding.page.dart"; // 引导页面
import "package:example/pages/page-view-form.page.dart"; // 表单页面
import "package:example/pages/radio-expandable-cards.page.dart"; // 可展开的卡片页面
import "package:flutter/material.dart";
import "package:flutter_bloc/flutter_bloc.dart";
import "package:go_router/go_router.dart"; // 路由管理
import "package:nice_flutter_kit/nice_flutter_kit.dart"; // nice_flutter_kit插件

void main() async {
  // 初始化Flutter绑定
  WidgetsFlutterBinding.ensureInitialized();

  // 配置nice_flutter_kit
  await NiceConfig.setup(
    baseCubitConfig: NiceBaseCubitConfig(
      wrapErrorHandler: (e, s) {
        // 错误处理示例(打印错误信息)
        print(e);
        print(s);
      },
    ),
    localizationsConfig: const NiceLocalizationsConfig(),
  );

  // 启动应用
  runApp(
    DevicePreview(
      builder: (_) => const MyApp(), // 使用DevicePreview进行设备预览
    ),
  );
}

// 应用主类
class MyApp extends StatefulWidget {
  static const pageRoutes = [
    RouteData(
      path: "/onboarding",
      titleKey: "home.pages.onboarding",
      child: OnboardingPage(), // 引导页面
    ),
    RouteData(
      path: "/page-view-form",
      titleKey: "home.pages.page_view_form",
      child: PageViewFormPage(), // 表单页面
    ),
    RouteData(
      path: "/auth",
      titleKey: "home.pages.auth",
      child: AuthPage(), // 认证页面
    ),
    RouteData(
      path: "/radio-expandable-cards",
      titleKey: "home.pages.radio_expandable_cards",
      child: RadioExpandableCardsPage(), // 可展开的卡片页面
    ),
    RouteData(
      path: "/base-list/infinite-scroll",
      titleKey: "home.pages.infinite_scroll_base_list",
      child: InfiniteScrollLoadedBaseListPage(), // 无限滚动列表页面
    ),
    RouteData(
      path: "/base-list/paginated",
      titleKey: "home.pages.paginated_base_list",
      child: PaginatedBaseListPage(), // 分页列表页面
    ),
  ];

  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

// 应用状态管理
class _MyAppState extends State<MyApp> {
  final _router = GoRouter(
    routes: [
      GoRoute(
        path: "/", // 主页路由
        builder: (_, __) => const HomePage(), // 主页构建器
      ),
      for (final route in MyApp.pageRoutes) // 动态添加页面路由
        GoRoute(
          path: route.path,
          builder: (_, __) => route.child,
        ),
    ],
  );

  [@override](/user/override)
  Widget build(BuildContext context) {
    return BlocProvider<AppCubit>(
      create: (context) => AppCubit(), // 创建Cubit实例
      child: BlocSelector<AppCubit, AppState, Locale?>(
        selector: (state) => state.overrideLocale, // 状态选择器
        builder: (context, overrideLocale) => MaterialApp.router(
          routerConfig: _router, // 设置路由配置
          title: "Flutter Demo", // 应用标题
          debugShowCheckedModeBanner: false, // 去掉调试标志
          theme: ThemeData(
            primarySwatch: Colors.blue, // 主色调
          ),
          locale: overrideLocale ?? DevicePreview.locale(context), // 设置语言环境
          builder: DevicePreview.appBuilder, // 使用DevicePreview构建器
          supportedLocales: NiceLocalizations.supportedLocales, // 支持的语言
          localizationsDelegates: NiceLocalizations.delegates, // 本地化代理
          localeResolutionCallback: NiceLocalizations.localResolutionCallback, // 语言解析回调
        ),
      ),
    );
  }
}

// 路由数据类
class RouteData {
  final String path;
  final String titleKey;
  final Widget child;

  const RouteData({
    required this.path,
    required this.titleKey,
    required this.child,
  });
}

更多关于Flutter多功能工具集插件nice_flutter_kit的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter多功能工具集插件nice_flutter_kit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


nice_flutter_kit 是一个功能丰富的 Flutter 插件,旨在为开发者提供一系列常用的工具和功能,以简化开发流程并提高效率。它通常包含网络请求、本地存储、图片处理、设备信息获取等功能模块。

安装 nice_flutter_kit

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

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

然后,运行 flutter pub get 来安装依赖。

使用 nice_flutter_kit

1. 网络请求

nice_flutter_kit 提供了简化的网络请求功能。你可以使用它来发送 HTTP 请求并处理响应。

import 'package:nice_flutter_kit/nice_flutter_kit.dart';

void fetchData() async {
  var response = await NiceHttp.get('https://jsonplaceholder.typicode.com/posts');
  if (response.statusCode == 200) {
    print(response.body);
  } else {
    print('Request failed with status: ${response.statusCode}');
  }
}

2. 本地存储

nice_flutter_kit 提供了本地存储功能,支持键值对的存储和读取。

import 'package:nice_flutter_kit/nice_flutter_kit.dart';

void saveData() async {
  await NiceStorage.setString('key', 'value');
}

void readData() async {
  String value = await NiceStorage.getString('key');
  print(value);
}

3. 图片处理

nice_flutter_kit 提供了图片处理功能,例如图片压缩、裁剪等。

import 'package:nice_flutter_kit/nice_flutter_kit.dart';

void compressImage() async {
  var compressedImage = await NiceImage.compress('path/to/image.jpg', quality: 80);
  print('Compressed image path: ${compressedImage.path}');
}

4. 设备信息获取

nice_flutter_kit 提供了获取设备信息的功能,例如设备型号、操作系统版本等。

import 'package:nice_flutter_kit/nice_flutter_kit.dart';

void getDeviceInfo() async {
  var deviceInfo = await NiceDeviceInfo.getDeviceInfo();
  print('Device Model: ${deviceInfo.model}');
  print('OS Version: ${deviceInfo.osVersion}');
}

5. 其他功能

nice_flutter_kit 还可能包含其他功能,例如日志记录、日期时间处理、加密解密等。你可以根据项目需求选择使用。

import 'package:nice_flutter_kit/nice_flutter_kit.dart';

void logMessage() {
  NiceLogger.log('This is a log message');
}

void encryptData() {
  String encrypted = NiceCrypto.encrypt('sensitive data');
  print('Encrypted data: $encrypted');
}
回到顶部