插件介绍

Simplistic Calculator 是一个功能完整的桌面 Flutter 计算器应用,展示了如何在 Flutter 中构建桌面级应用程序。该插件使用现代化的 Flutter 技术栈实现,支持基本和高级数学运算,并提供计算历史记录功能。
在这里插入图片描述

核心功能与特性

  • 完整的计算器功能:支持基本算术运算(加减乘除)和高级数学函数(三角函数、对数、平方根等)
  • 计算历史记录:自动保存计算历史,方便用户查看和回溯
  • 响应式设计:适配不同屏幕尺寸,提供良好的用户体验
  • 现代化状态管理:使用 Flutter Riverpod 进行高效的状态管理
  • 数学表达式解析:使用 math_expressions 包解析和计算复杂数学表达式
  • 自动调整文本大小:使用 auto_size_text 包确保计算结果在各种屏幕尺寸下都能完整显示

使用步骤

1. 包的引入

由于这是一个自定义修改版本的包,需要通过 Git 形式引入。在项目的 pubspec.yaml 文件中添加以下依赖配置:

dependencies:
  simplistic_calculator:
    git:
      url: "https://atomgit.com/"
      path: "packages/simplistic_calculator/simplistic_calculator"

同时,需要确保项目中已添加相关依赖包,因为 simplistic_calculator 依赖这些包:

dependencies:
  auto_size_text: ^3.0.0
  flutter_layout_grid: ^2.0.1
  flutter_riverpod: ^2.0.2
  math_expressions: ^2.3.0

2. 项目配置

在项目的 lib/main.dart 文件中,导入必要的包并启动应用:

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:simplistic_calculator/simplistic_calculator.dart';

void main() {
  runApp(
    const ProviderScope(
      child: MaterialApp(
        home: CalculatorApp(),
      ),
    ),
  );
}

3. API 调用

以下是在 Flutter 应用中使用 simplistic_calculator 的核心代码示例:

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:simplistic_calculator/main.dart'; // 导入计算器组件

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

  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'HarmonyOS Calculator',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const MyHomePage(),
    );
  }
}

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

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('HarmonyOS Calculator'),
      ),
      body: const ProviderScope(
        child: CalculatorApp(), // 使用 CalculatorApp 组件
      ),
    );
  }
}

核心 API 解析

CalculatorEngine 类

CalculatorEngine 是计算器的核心引擎类,负责处理计算逻辑和状态管理:

class CalculatorEngine extends StateNotifier<CalculatorState> {
  CalculatorEngine() : super(const CalculatorState(buffer: '0', ...));

  // 添加内容到输入缓冲区
  void addToBuffer(String str, {bool continueWithResult = false});

  // 删除最后一个字符
  void backspace();

  // 清空缓冲区
  void clear();

  // 计算表达式结果
  void evaluate();
}

CalculatorState 类

CalculatorState 保存计算器的当前状态:

class CalculatorState {
  final String buffer; // 当前输入缓冲区
  final List<String> calcHistory; // 计算历史记录
  final CalculatorEngineMode mode; // 计算器模式(输入或结果)
  final String error; // 错误信息

  CalculatorState copyWith({...}); // 更新状态的方法
}

状态管理

使用 Riverpod 进行状态管理:

final calculatorStateProvider =
    StateNotifierProvider<CalculatorEngine, CalculatorState>(
        (_) => CalculatorEngine());

鸿蒙平台适配注意事项

  1. 窗口配置:在鸿蒙设备上,可能需要调整窗口大小和标题配置,以适应不同的设备屏幕
import 'dart:io' show Platform;
import 'package:flutter/foundation.dart' show kIsWeb;

void main() {
  if (!kIsWeb && (Platform.isWindows || Platform.isLinux || Platform.isMacOS || Platform.isOHOS)) {
    WidgetsFlutterBinding.ensureInitialized();
    setWindowTitle('HarmonyOS Calculator');
    setWindowMinSize(const Size(600, 500));
  }

  // 启动应用
}
  1. 权限配置:确保应用有必要的权限访问
  2. 性能优化:对于复杂的数学计算,考虑在鸿蒙设备上进行性能测试和优化
  3. 界面适配:根据鸿蒙设备的屏幕特性,调整计算器界面布局

总结

Simplistic Calculator 是一个功能完整的桌面 Flutter 计算器应用,展示了如何使用现代化的 Flutter 技术栈构建高质量的桌面应用程序。通过 Riverpod 进行状态管理,使用 math_expressions 解析数学表达式,结合 flutter_layout_grid 实现灵活的界面布局,为用户提供了一个功能丰富、易于使用的计算器应用。

在鸿蒙平台上使用 Simplistic Calculator 时,需要注意窗口配置、权限设置和性能优化,以确保在鸿蒙设备上获得最佳的用户体验。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐