Flutter通用功能插件flutter_commons的使用

Flutter通用功能插件flutter_commons的使用

flutter_commons 是一个用于快速开发 Flutter 应用的通用功能插件。它集成了许多常用的功能模块,例如网络请求、本地存储、文件操作等,能够帮助开发者减少重复工作并提高开发效率。

以下是一个完整的示例,展示如何使用 flutter_commons 插件实现一个简单的用户登录功能。

1. 添加依赖

pubspec.yaml 文件中添加 flutter_commons 依赖:

dependencies:
  flutter_commons: ^1.0.0

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

2. 初始化插件

在应用启动时初始化 flutter_commons 插件:

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

void main() {
  // 初始化插件
  FlutterCommons.init();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Commons 示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: LoginPage(),
    );
  }
}

3. 实现登录功能

我们使用 flutter_commons 提供的网络请求工具来模拟用户登录。

3.1 登录页面布局

class LoginPage extends StatefulWidget {
  [@override](/user/override)
  _LoginPageState createState() => _LoginPageState();
}

class _LoginPageState extends State<LoginPage> {
  final TextEditingController _usernameController = TextEditingController();
  final TextEditingController _passwordController = TextEditingController();

  bool _isLoading = false;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('登录'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              controller: _usernameController,
              decoration: InputDecoration(labelText: '用户名'),
            ),
            TextField(
              controller: _passwordController,
              obscureText: true,
              decoration: InputDecoration(labelText: '密码'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _isLoading ? null : () => _login(context),
              child: _isLoading
                  ? CircularProgressIndicator()
                  : Text('登录'),
            ),
          ],
        ),
      ),
    );
  }

  void _login(BuildContext context) async {
    setState(() {
      _isLoading = true;
    });

    try {
      // 使用 flutter_commons 的网络请求工具发送登录请求
      final response = await NetworkUtils.post(
        url: 'https://example.com/api/login',
        data: {
          'username': _usernameController.text,
          'password': _passwordController.text,
        },
      );

      if (response.statusCode == 200) {
        // 登录成功,跳转到主页
        Navigator.pushReplacement(
          context,
          MaterialPageRoute(builder: (context) => HomePage()),
        );
      } else {
        // 显示错误信息
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('登录失败,请检查用户名和密码')),
        );
      }
    } catch (e) {
      // 网络请求失败
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('网络请求失败')),
      );
    } finally {
      setState(() {
        _isLoading = false;
      });
    }
  }
}

3.2 主页页面

class HomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('主页'),
      ),
      body: Center(
        child: Text('欢迎使用 Flutter Commons!'),
      ),
    );
  }
}

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

1 回复

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


flutter_commons 是一个 Flutter 插件,旨在提供一些通用的功能和工具,帮助开发者更高效地构建 Flutter 应用。它通常包含一些常用的工具类、扩展方法、UI 组件等,以减少重复代码并提高开发效率。

以下是一些常见的 flutter_commons 功能和使用方法:

1. 安装插件

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

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

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

2. 常用功能

2.1 工具类

flutter_commons 提供了一些常用的工具类,例如 StringUtilsDateUtils 等。

import 'package:flutter_commons/flutter_commons.dart';

void main() {
  // 字符串工具类
  String str = "Hello, World!";
  print(StringUtils.isNullOrEmpty(str)); // 检查字符串是否为空或 null

  // 日期工具类
  DateTime now = DateTime.now();
  print(DateUtils.formatDate(now, 'yyyy-MM-dd')); // 格式化日期
}

2.2 扩展方法

flutter_commons 提供了一些扩展方法,例如对 StringList 等的扩展。

import 'package:flutter_commons/flutter_commons.dart';

void main() {
  // 字符串扩展方法
  String str = "hello";
  print(str.capitalize()); // 首字母大写

  // 列表扩展方法
  List<int> numbers = [1, 2, 3, 4, 5];
  print(numbers.sum()); // 计算列表元素的和
}

2.3 UI 组件

flutter_commons 可能还包含一些常用的 UI 组件,例如 CustomButtonLoadingIndicator 等。

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Commons Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              CustomButton(
                onPressed: () {
                  print('Button Pressed');
                },
                text: 'Click Me',
              ),
              SizedBox(height: 20),
              LoadingIndicator(),
            ],
          ),
        ),
      ),
    );
  }
}

void main() => runApp(MyApp());

2.4 网络请求

flutter_commons 可能还封装了网络请求的工具类,简化网络请求的操作。

import 'package:flutter_commons/flutter_commons.dart';

void fetchData() async {
  var response = await HttpUtils.get('https://jsonplaceholder.typicode.com/posts');
  print(response);
}
回到顶部