Flutter MVVM架构插件stacked_mvvm的使用

Flutter MVVM架构插件stacked_mvvm的使用

stacked_mvvm

Clean Architecture for Flutter

开始使用

本项目是一个用于Flutter的Dart包,它包含可以轻松共享到多个Flutter或Dart项目的库模块。

对于如何开始使用Flutter,您可以查看我们的在线文档,其中提供了教程、示例、移动开发指南以及完整的API参考。

基础组件

  • BaseView
  • BasePage
  • BaseWidget
  • BaseViewModel
  • BaseModel

示例代码

以下是main.dart文件的示例代码:

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

import 'example_app.dart'; // 引入主应用类

void main() {
  runApp(ExampleApp()); // 运行主应用
}

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

1 回复

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


stacked_mvvm 是一个基于 Flutter 的 MVVM 架构插件,它结合了 stackedprovider 的优点,提供了一个简单且强大的 MVVM 架构实现。stacked_mvvm 提供了一种结构化的方式来管理 Flutter 应用的状态、业务逻辑和 UI 层。

安装

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

dependencies:
  flutter:
    sdk: flutter
  stacked_mvvm: ^1.0.0  # 请检查最新版本

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

基本概念

  1. ViewModel: 负责处理业务逻辑和状态管理。ViewModelChangeNotifier 的子类,可以通过 notifyListeners() 来通知 UI 更新。

  2. View: 负责 UI 的展示和用户交互。View 是一个 StatefulWidget,它通过 ViewModel 来获取数据和响应状态变化。

  3. Service: 负责处理与外部系统的交互,例如网络请求、数据库操作等。

使用步骤

1. 创建 ViewModel

首先,创建一个 ViewModel 类,继承自 BaseViewModel

import 'package:stacked_mvvm/stacked_mvvm.dart';

class CounterViewModel extends BaseViewModel {
  int _count = 0;
  int get count => _count;

  void increment() {
    _count++;
    notifyListeners();
  }
}

2. 创建 View

接下来,创建一个 View,它负责展示 UI 并与 ViewModel 进行交互。

import 'package:flutter/material.dart';
import 'package:stacked_mvvm/stacked_mvvm.dart';
import 'counter_viewmodel.dart';

class CounterView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ViewModelBuilder<CounterViewModel>.reactive(
      viewModelBuilder: () => CounterViewModel(),
      builder: (context, viewModel, child) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Counter App'),
          ),
          body: Center(
            child: Text(
              'Count: ${viewModel.count}',
              style: TextStyle(fontSize: 24),
            ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: viewModel.increment,
            child: Icon(Icons.add),
          ),
        );
      },
    );
  }
}

3. 在应用中使用

最后,在你的应用中使用这个 View

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

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

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

高级用法

依赖注入

stacked_mvvm 支持依赖注入,你可以通过 get_it 或其他依赖注入工具来管理 ViewModelService 的依赖关系。

导航

你可以使用 stacked_mvvm 提供的导航服务来处理页面跳转。

import 'package:stacked_mvvm/stacked_mvvm.dart';

class MyViewModel extends BaseViewModel {
  final NavigationService _navigationService = locator<NavigationService>();

  void navigateToNextPage() {
    _navigationService.navigateTo('nextPage');
  }
}
回到顶部