Dart 语言 计算器应用高级功能示例

Dart阿木 发布于 2025-06-19 4 次阅读


Dart 语言计算器应用高级功能示例

Dart 是一种由 Google 开发的编程语言,旨在构建高性能的网络应用。它具有简洁的语法和丰富的库支持,使得开发者可以轻松地创建跨平台的应用程序。我们将探讨如何使用 Dart 语言开发一个具有高级功能的计算器应用。我们将实现一些常见的数学运算,如三角函数、指数和对数运算,以及一些实用的功能,如单位转换和日期计算。

环境准备

在开始编写代码之前,确保你已经安装了 Dart SDK。你可以从 Dart 官方网站下载并安装它。安装完成后,打开命令行工具,输入 `dart --version` 检查 Dart 是否已正确安装。

项目结构

我们的计算器应用将分为以下几个部分:

1. `lib/main.dart` - 主文件,包含应用的入口点和主要的逻辑。

2. `lib/calculation.dart` - 包含数学运算和高级功能的实现。

3. `lib/ui/home.dart` - 包含计算器用户界面的实现。

主文件 `lib/main.dart`

dart

import 'package:flutter/material.dart';


import 'ui/home.dart';

void main() {


runApp(MyApp());


}

class MyApp extends StatelessWidget {


@override


Widget build(BuildContext context) {


return MaterialApp(


title: 'Advanced Calculator',


theme: ThemeData(


primarySwatch: Colors.blue,


),


home: HomeScreen(),


);


}


}


数学运算和高级功能实现 `lib/calculation.dart`

dart

import 'dart:math';

class Calculation {


// 三角函数


static double sin(double angle) {


return sin(angle pi / 180);


}

static double cos(double angle) {


return cos(angle pi / 180);


}

static double tan(double angle) {


return tan(angle pi / 180);


}

// 指数和对数运算


static double exp(double x) {


return exp(x);


}

static double log(double x) {


return log(x);


}

// 单位转换


static double convertTemperature(double celsius, String to) {


if (to == 'F') {


return (celsius 9 / 5) + 32;


} else if (to == 'K') {


return celsius + 273.15;


}


return celsius;


}

// 日期计算


static String calculateDaysSinceEpoch(int days) {


DateTime date = DateTime.fromMillisecondsSinceEpoch(days 86400000);


return date.toString();


}


}


用户界面实现 `lib/ui/home.dart`

dart

import 'package:flutter/material.dart';


import 'package:advanced_calculator/calculation.dart';

class HomeScreen extends StatefulWidget {


@override


_HomeScreenState createState() => _HomeScreenState();


}

class _HomeScreenState extends State<HomeScreen> {


String _input = '';


String _output = '';

void _onButtonPressed(String value) {


setState(() {


if (value == 'C') {


_input = '';


_output = '';


} else if (value == '=') {


try {


double result = double.parse(_input);


_output = Calculation.calculateDaysSinceEpoch(result).toString();


} catch (e) {


_output = 'Error';


}


} else {


_input += value;


}


});


}

@override


Widget build(BuildContext context) {


return Scaffold(


appBar: AppBar(


title: Text('Advanced Calculator'),


),


body: Column(


children: <Widget>[


Expanded(


child: Padding(


padding: const EdgeInsets.all(16.0),


child: Column(


children: <Widget>[


Padding(


padding: const EdgeInsets.all(8.0),


child: TextField(


controller: TextEditingController(text: _output),


decoration: InputDecoration(


border: OutlineInputBorder(),


hintText: 'Output',


enabled: false,


),


textAlign: TextAlign.right,


),


),


Padding(


padding: const EdgeInsets.all(8.0),


child: TextField(


controller: TextEditingController(text: _input),


decoration: InputDecoration(


border: OutlineInputBorder(),


hintText: 'Input',


enabled: false,


),


textAlign: TextAlign.right,


),


),


],


),


),


),


Expanded(


child: Padding(


padding: const EdgeInsets.all(16.0),


child: IntrinsicHeight(


child: Row(


crossAxisAlignment: CrossAxisAlignment.stretch,


children: <Widget>[


Expanded(


child: ButtonBar(


children: <Widget>[


ElevatedButton(


onPressed: () => _onButtonPressed('sin'),


child: Text('sin'),


),


ElevatedButton(


onPressed: () => _onButtonPressed('cos'),


child: Text('cos'),


),


ElevatedButton(


onPressed: () => _onButtonPressed('tan'),


child: Text('tan'),


),


],


),


),


Expanded(


child: ButtonBar(


children: <Widget>[


ElevatedButton(


onPressed: () => _onButtonPressed('exp'),


child: Text('exp'),


),


ElevatedButton(


onPressed: () => _onButtonPressed('log'),


child: Text('log'),


),


ElevatedButton(


onPressed: () => _onButtonPressed('C'),


child: Text('C'),


),


],


),


),


Expanded(


child: ButtonBar(


children: <Widget>[


ElevatedButton(


onPressed: () => _onButtonPressed('°C to °F'),


child: Text('°C to °F'),


),


ElevatedButton(


onPressed: () => _onButtonPressed('°C to °K'),


child: Text('°C to °K'),


),


ElevatedButton(


onPressed: () => _onButtonPressed('='),


child: Text('='),


),


],


),


),


],


),


),


),


),


],


),


);


}


}


总结

本文通过 Dart 语言展示了如何创建一个具有高级功能的计算器应用。我们实现了三角函数、指数和对数运算,以及单位转换和日期计算等功能。这个示例可以作为构建更复杂应用程序的基础,并展示了 Dart 语言在移动和Web应用开发中的强大能力。

请注意,这个示例是一个简单的演示,实际应用中可能需要更多的错误处理和用户界面优化。Dart 语言和 Flutter 框架提供了丰富的库和工具,可以进一步扩展和增强计算器的功能。