Flutter架构设计插件junes_flutter_architecture的使用

Flutter架构设计插件junes_flutter_architecture的使用

June’s Flutter Architecture

文档Pub.dev

  • 减少编码时间10倍
  • 直观的结构,便于一年后快速掌握项目
  • 大量现成的包可供使用

这是一个全面的解决方案架构,提供了极其直观、高效且灵活的方法。它解决了现有Flutter包和系统无法解决的时间消耗任务,显著减少了开发时间。

特性

UI

  • 💙 极其直观的widget结构

    • 所有页面、组件、底部菜单、提示信息、通知栏和所有widget都被分为视图、用户操作事件、视图循环、加载视图、视图模型和视图模型动作。这使得它们极其直观,随时可以理解,并大大提高了开发速度和维护能力。
  • 🚀 统一处理所有widget以完成UI任务

    • 页面、组件、底部菜单、提示信息、通知栏、对话框(以及其他正在添加的功能)都具有相同的结构,允许你以统一的方式创建所需的界面,大大增强了可重用性和效率。
  • 🍭 大量的widget引用

    • 它提供了大量的UI组件供立即使用,如文本字段屏幕、登录屏幕、菜单屏幕等,所有这些都在同一架构内创建。这提供了无穷无尽的组件,使你能够轻松选择并使用所需的视图。

数据库

  • 极其简单的数据库处理方法
    • 通过预先编写在数据库中不可用的类型以便于使用,并且不限制于某个包,它允许你使用所有熟悉的数据类型来操作各种数据库(甚至支持其他数据类的列表类型!)
    • 通过为Dart、TypeScript、Python等提供完全一致的数据库结构和通信方法,节省了高达100倍连接其他语言(如Firebase Functions)所需的开发时间。
    • 数据库高度结构化,即使你在一年后打开它,也能立即理解其所有方面。

  • 🦄 已经准备好
    • 许多包必须在正确的时间以正确的方式准备才能正常工作。例如,Firebase、FCM、国际化、状态管理、屏幕工具、AdMob等都有不同的加载时间和方法。因此,每次添加这些包时,许多开发者都需要花费大量时间考虑在哪里放置它们。即使这样,随着时间推移,它们会增加维护成本。
    • 你只需开始你的项目并编写必要的代码,因为所有包都已经准备好使用。

清洁架构

  • 🦄 极其简单
    • 通过预先安装复杂的大量清洁架构样板代码,设计用于在使用时应用清洁架构。

快速入门

Alt text

  1. 当前指南主要针对Mac。
  2. 请查看这里并确定是否还有未安装的程序。
  3. 前往以下GitHub 链接,点击“使用此模板” -> “创建新仓库”,制作一个新的repo,下载它并在Android Studio中打开。
  4. 打开查找替换窗口(编辑 -> 查找 -> 在文件中替换…),搜索“june.lee.love”并替换为你所需的包名。
  5. pubspec.yaml中的name: love改为name:
  6. 打开终端并输入以下命令以下载包:
flutter pub get
  1. 输入以下命令后,请链接你的Firebase项目。如果你还没有Firebase项目,请访问该页面创建一个,然后再试一次。
flutterfire configure

更多关于Flutter架构设计插件junes_flutter_architecture的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter架构设计插件junes_flutter_architecture的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


junes_flutter_architecture 是一个帮助开发者快速构建 Flutter 应用程序的架构设计插件。它基于常见的架构模式(如 MVVM、Clean Architecture 等)提供了一套标准化的代码结构和工具,以简化开发流程并提高代码的可维护性。

以下是使用 junes_flutter_architecture 的基本步骤和示例:

1. 安装插件

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

dependencies:
  junes_flutter_architecture: ^1.0.0

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

2. 项目结构

junes_flutter_architecture 建议的项目结构通常包括以下几个主要部分:

  • models: 数据模型类
  • repositories: 数据仓库,负责与数据源(如 API、数据库)交互
  • viewmodels: 视图模型,负责处理业务逻辑
  • views: 用户界面组件
  • services: 服务层,提供通用的功能(如网络请求、本地存储等)

3. 创建模型

models 目录下创建数据模型类。例如:

class User {
  final String id;
  final String name;
  final String email;

  User({required this.id, required this.name, required this.email});

  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      id: json['id'],
      name: json['name'],
      email: json['email'],
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'name': name,
      'email': email,
    };
  }
}

4. 创建仓库

repositories 目录下创建数据仓库类。例如:

import 'package:junes_flutter_architecture/junes_flutter_architecture.dart';
import '../models/user.dart';

class UserRepository {
  final ApiService _apiService = ApiService();

  Future<User> getUser(String userId) async {
    final response = await _apiService.get('/users/$userId');
    return User.fromJson(response);
  }
}

5. 创建视图模型

viewmodels 目录下创建视图模型类。例如:

import 'package:junes_flutter_architecture/junes_flutter_architecture.dart';
import '../repositories/user_repository.dart';
import '../models/user.dart';

class UserViewModel extends BaseViewModel {
  final UserRepository _userRepository = UserRepository();
  User? _user;

  User? get user => _user;

  Future<void> fetchUser(String userId) async {
    setBusy(true);
    try {
      _user = await _userRepository.getUser(userId);
    } catch (e) {
      setError(e);
    } finally {
      setBusy(false);
    }
  }
}

6. 创建视图

views 目录下创建用户界面组件。例如:

import 'package:flutter/material.dart';
import 'package:junes_flutter_architecture/junes_flutter_architecture.dart';
import '../viewmodels/user_viewmodel.dart';

class UserView extends StatelessWidget {
  final UserViewModel _viewModel = UserViewModel();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return ViewModelProvider<UserViewModel>.withConsumer(
      viewModel: _viewModel,
      onModelReady: (model) => model.fetchUser('1'),
      builder: (context, model, child) {
        if (model.isBusy) {
          return Center(child: CircularProgressIndicator());
        }

        if (model.hasError) {
          return Center(child: Text('Error: ${model.error}'));
        }

        return Scaffold(
          appBar: AppBar(
            title: Text('User Profile'),
          ),
          body: Center(
            child: Text('User Name: ${model.user?.name}'),
          ),
        );
      },
    );
  }
}

7. 运行应用程序

最后,在 main.dart 中运行你的应用程序:

import 'package:flutter/material.dart';
import 'views/user_view.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Architecture Example',
      home: UserView(),
    );
  }
}
回到顶部