Flutter基础功能模块插件base_module的使用

Flutter基础功能模块插件base_module的使用

base_module 是一个实用包,帮助开发者轻松创建新的屏幕和视图,这些屏幕和视图具备MVP项目结构和提供状态管理结构的能力。此外,基础类如 BaseScreenBaseView 包含了一些基本属性,可以用来创建新的屏幕和单一视图。

在创建新的屏幕时,开发者需要添加标题、操作按钮、底部导航栏等元素。这些元素可以作为预设并开箱即用。根据需求,必须在基础类中自定义这些小部件。

示例代码

以下是使用 base_module 创建一个简单的应用的完整示例代码:

import 'package:base_module/base_utils/base_presenter.dart';
import 'package:base_module/base_utils/base_provider.dart';
import 'package:base_module/base_utils/base_screen/base_screen.dart';
import 'package:base_module/base_utils/base_view/base_view.dart';
import 'package:base_module/fab_utils/app_floating_actiona_button.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

void main() {
  runApp(const MyApplication());
}

class MyApplication extends StatelessWidget {
  const MyApplication({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
      ),
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends BaseScreen<HomeProvider, HomePresenter> {
  [@override](/user/override)
  HomePresenter setPresenter() => HomePresenter();

  [@override](/user/override)
  HomeProvider setProvider() => HomeProvider();

  // 自定义AppBar
  [@override](/user/override)
  AppBar? get customAppBar => AppBar(
    title: Consumer<HomeProvider>(
      builder: (context, provider, child) => Text(
          provider.selectedNavigationIndex == 0
              ? "欢迎回家"
              : "欢迎到工作"),
    ),
  );

  // 自定义浮动操作按钮
  [@override](/user/override)
  AppFloatingActionButton? get appFloatingActionButton =>
      AppFloatingActionButton(
          button: FloatingActionButton(
            elevation: 0,
            onPressed: () => basePresenter.showAlertDialog(),
            child: const Icon(Icons.add),
          ),
          location: FloatingActionButtonLocation.centerDocked);

  // 创建视图
  [@override](/user/override)
  BaseView createView() {
    return HomeView();
  }

  // 底部导航栏项
  [@override](/user/override)
  List<NavigationDestination>? get bottomNavBarItems => [
    const NavigationDestination(
        selectedIcon: Icon(Icons.home),
        icon: Icon(Icons.home_outlined),
        label: "首页"),
    const NavigationDestination(
        selectedIcon: Icon(Icons.home_repair_service_rounded),
        icon: Icon(Icons.home_repair_service_outlined),
        label: "工作"),
  ];
}

// 视图类
class HomeView extends BaseView {
  [@override](/user/override)
  Widget createView() {
    return const Card(
      child: Padding(
        padding: EdgeInsets.all(10),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Row(
              children: [
                Text(
                  "这是卡片视图。",
                  style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600),
                ),
              ],
            ),
            Divider(
              thickness: 2,
            ),
            Text("4天"),
            SizedBox(height: 4),
            Text(
                "这只是简单文本,用于向您说明系统中存在的问题。"),
          ],
        ),
      ),
    );
  }
}

// 提供者类
class HomeProvider extends BaseProvider {
  int count = 0;

  void updateCount(int count) {
    this.count = count;
    notifyListeners();
  }
}

// 呈现器类
class HomePresenter extends BasePresenter<HomeProvider> {
  // 显示警告对话框
  showAlertDialog() {
    showDialog(
      context: context,
      builder: (context) => AlertDialog(
        title: const Text("警告!!!"),
        content: const Text(
            "这是一个示例对话框,用于解释如何显示对话框。"),
        actions: [
          FilledButton(
              onPressed: () => Navigator.pop(context),
              child: const Text("确定"))
        ],
      ),
    );
  }
}

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

1 回复

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


base_module 是一个 Flutter 插件,通常用于提供一些基础的功能模块,帮助开发者快速构建应用。这个插件的具体功能可能因项目而异,但通常包括网络请求、数据存储、UI组件、工具类等基础功能。

以下是一个假设的 base_module 插件的使用示例,假设它提供了一些基础功能,如网络请求、本地存储、工具类等。

安装插件

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

dependencies:
  flutter:
    sdk: flutter
  base_module: ^1.0.0  # 假设版本号为1.0.0

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

使用插件

1. 网络请求

假设 base_module 提供了一个网络请求的工具类 NetworkUtil,你可以这样使用:

import 'package:base_module/base_module.dart';

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

2. 本地存储

假设 base_module 提供了一个本地存储的工具类 StorageUtil,你可以这样使用:

import 'package:base_module/base_module.dart';

void saveData() async {
  await StorageUtil.saveString('key', 'value');
}

void getData() async {
  String value = await StorageUtil.getString('key');
  print('Saved value: $value');
}

3. 工具类

假设 base_module 提供了一些工具类,如 StringUtil,你可以这样使用:

import 'package:base_module/base_module.dart';

void checkEmail() {
  String email = 'test@example.com';
  if (StringUtil.isEmail(email)) {
    print('Valid email');
  } else {
    print('Invalid email');
  }
}

4. UI组件

假设 base_module 提供了一些常用的UI组件,如 CustomButton,你可以这样使用:

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Base Module Example'),
      ),
      body: Center(
        child: CustomButton(
          onPressed: () {
            print('Button Pressed');
          },
          text: 'Click Me',
        ),
      ),
    );
  }
}
回到顶部