Flutter基础功能扩展插件flutter_snow_base的使用

Flutter基础功能扩展插件flutter_snow_base的使用


🧰 Flutter Snow Base! 🧰

Pub License: BSD-3-Clause Twitter: SnowmanLabs

🧰 一个为你的项目提供基本工具的包,比如:

  • 轻松配置暗黑主题
  • 支持Flavors(风味)配置
  • 集成了帮助测试响应式的Device Preview
  • 预配置了错误报告工具Catcher
  • 预配置多语言支持
  • 集成了模块化开发工具flutter_modular
  • 扩展了网络资源获取工具resource_network_fetcher

📝 升级从2.1.x到2.2.x

在此次更新中,我们移除了NetworkBoundResources()构造函数,并将其所有方法改为静态方法。因此,你需要对旧代码进行一些更改。我们可以使用正则表达式来批量替换代码。

查找内容:

(?<=NetworkBoundResources)((.*?)\))(\n*)?(.*)?.as(.*?)\(

替换为:

.as$5$2

示例: 替换示例


📄 目录


❓ 为什么应该使用

Flutter Snow Base 帮助你初始化项目时集成现成的工具,比如测试不同屏幕上的布局只需更改一个属性即可启用。或者捕获应用中的错误并发送到你的邮箱,无需额外努力,只需配置发送方式即可!


🎯 动机

我们意识到几乎所有项目都需要相同的基础功能,如崩溃报告器、风味配置、多语言支持等。因此,此包将这些常见功能整合在一起。


📦 示例

以下是一些使用flutter_snow_base作为基础的示例项目:


🔧 安装

按照以下步骤安装:

  1. pubspec.yaml中添加依赖:

    dependencies:
      flutter_snow_base: ^版本号
    
  2. 运行命令:

    flutter pub get
    

🎉 使用

注意:此包与flutter_snow_blower配合使用,如果对如何初始化有疑问,请查阅flutter_snow_blower文档或直接创建项目查看其运行方式!


main.dart 文件
void main() {
  RunAppSnow(
    ModularApp(  // Material app
      module: AppModule(),
    ),
    flavorValues: Constants.flavorDev, // 传递风味值
    getItInit: () => Resource.setErrorMapper(ErrorMapper.from), // 在启动前执行某些操作
    flavor: Flavor.dev, // 选择风味
    enableDevicePreview: false, // 启用设备预览
    errorReporter: (errorDetails) {}, // 自定义错误报告器
  );
}

material_app.dart

这是使用SnowMaterialApp的基本配置,你可以添加其他参数,与MaterialApp一致。

class AppWidget extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return SnowMaterialApp(
      theme: AppThemeData.themeDataLight, // 亮色主题
      darkTheme: AppThemeData.themeDataDark, // 暗黑主题
    );
  }
}

📋 示例代码

以下是一个完整的示例代码,展示如何使用flutter_snow_base构建一个简单的Flutter应用:

// main.dart
import 'package:flutter/material.dart';
import 'package:flutter_snow_base/flutter_snow_base.dart';
import 'app_widget.dart';

void main() {
  RunAppSnow(
    ModularApp(module: AppModule()), // 初始化模块化应用
    flavorValues: Constants.flavorDev, // 设置开发环境
    flavor: Flavor.dev, // 当前风味
    enableDevicePreview: false, // 禁用设备预览
    errorReporter: (errorDetails) {
      print("Error Reported: $errorDetails"); // 自定义错误处理
    },
  );
}

// app_widget.dart
import 'package:flutter/material.dart';
import 'package:flutter_snow_base/flutter_snow_base.dart';

class AppWidget extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return SnowMaterialApp(
      theme: ThemeData.light(), // 亮色主题
      darkTheme: ThemeData.dark(), // 暗黑主题
      home: const Center(child: Text('Hello Flutter Snow Base!')),
    );
  }
}

更多关于Flutter基础功能扩展插件flutter_snow_base的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter基础功能扩展插件flutter_snow_base的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_snow_base 是一个用于扩展 Flutter 应用基础功能的插件。它提供了许多常用的工具和功能,可以帮助开发者更高效地构建 Flutter 应用。以下是一些常见的使用方法和功能:

1. 安装插件

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

dependencies:
  flutter:
    sdk: flutter
  flutter_snow_base: ^1.0.0  # 请使用最新版本

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

2. 常用功能

2.1 网络请求

flutter_snow_base 提供了简化的网络请求 API。你可以使用 SnowHttp 类来发起网络请求。

import 'package:flutter_snow_base/flutter_snow_base.dart';

void fetchData() async {
  var response = await SnowHttp().get('https://jsonplaceholder.typicode.com/posts');
  if (response.statusCode == 200) {
    print('Data: ${response.body}');
  } else {
    print('Failed to load data');
  }
}

2.2 本地存储

flutter_snow_base 提供了简单的本地存储功能,使用 SnowStorage 类来存储和读取数据。

import 'package:flutter_snow_base/flutter_snow_base.dart';

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

void readData() async {
  String value = await SnowStorage().getString('key');
  print('Value: $value');
}

2.3 日志记录

flutter_snow_base 提供了日志记录功能,使用 SnowLogger 类来记录日志。

import 'package:flutter_snow_base/flutter_snow_base.dart';

void logMessage() {
  SnowLogger().i('This is an info message');
  SnowLogger().d('This is a debug message');
  SnowLogger().e('This is an error message');
}

2.4 路由管理

flutter_snow_base 提供了简单的路由管理功能,使用 SnowRouter 类来管理路由。

import 'package:flutter_snow_base/flutter_snow_base.dart';

void navigateToPage() {
  SnowRouter().pushNamed('/home');
}

3. 配置

flutter_snow_base 允许你通过配置来定制插件的行为。你可以在应用的入口处进行配置。

import 'package:flutter_snow_base/flutter_snow_base.dart';

void main() {
  SnowConfig(
    baseUrl: 'https://jsonplaceholder.typicode.com',
    enableLogging: true,
  );

  runApp(MyApp());
}

4. 其他功能

flutter_snow_base 还提供了其他一些功能,如:

  • 设备信息:获取设备信息,如设备型号、操作系统版本等。
  • 权限管理:简化权限请求流程。
  • 图片加载:使用 SnowImage 类来加载和显示图片。

5. 示例代码

以下是一个简单的示例,展示了如何使用 flutter_snow_base 进行网络请求和本地存储:

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

void main() {
  SnowConfig(
    baseUrl: 'https://jsonplaceholder.typicode.com',
    enableLogging: true,
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Snow Base Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: fetchData,
                child: Text('Fetch Data'),
              ),
              ElevatedButton(
                onPressed: saveData,
                child: Text('Save Data'),
              ),
              ElevatedButton(
                onPressed: readData,
                child: Text('Read Data'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void fetchData() async {
    var response = await SnowHttp().get('/posts');
    if (response.statusCode == 200) {
      print('Data: ${response.body}');
    } else {
      print('Failed to load data');
    }
  }

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

  void readData() async {
    String value = await SnowStorage().getString('key');
    print('Value: $value');
  }
}
回到顶部