Dart 语言 日程安排实现示例

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


Dart 语言实现日程安排系统示例

在当今快节奏的生活中,日程安排对于个人和组织来说都至关重要。Dart 语言作为一种现代化的编程语言,以其简洁、高效的特点在移动应用开发中越来越受欢迎。本文将围绕 Dart 语言,实现一个简单的日程安排系统示例,帮助读者了解 Dart 在构建此类应用中的能力。

系统需求分析

在开始编写代码之前,我们需要明确日程安排系统的基本需求:

1. 用户界面:一个简洁的用户界面,用于展示日程列表、添加新日程、编辑日程和删除日程。

2. 日程管理:能够添加、编辑、删除和查询日程。

3. 数据存储:日程数据需要在应用关闭后持久化存储。

系统设计

技术选型

- Dart 语言:作为开发语言。

- Flutter:作为 UI 框架,用于构建跨平台的应用。

- SQLite:作为本地数据库,用于数据持久化。

系统架构

1. Model:定义日程的数据模型。

2. Service:提供日程的增删改查操作。

3. UI:用户界面,用于与用户交互。

实现代码

1. 创建 Dart 项目

我们需要创建一个新的 Dart 项目:

bash

dart create schedule_app


cd schedule_app


2. 定义日程模型

在 `lib/model/schedule.dart` 文件中,定义日程模型:

dart

class Schedule {


final int id;


final String title;


final DateTime date;


final String description;

Schedule({required this.id, required this.title, required this.date, required this.description});

// 用于将对象转换为 Map,方便存储到数据库


Map<String, dynamic> toMap() {


return {


'id': id,


'title': title,


'date': date.toIso8601String(),


'description': description,


};


}

// 从 Map 转换回对象


static Schedule fromMap(Map<String, dynamic> map) {


return Schedule(


id: map['id'],


title: map['title'],


date: DateTime.parse(map['date']),


description: map['description'],


);


}


}


3. 实现日程服务

在 `lib/service/schedule_service.dart` 文件中,实现日程服务:

dart

import 'package:schedule_app/model/schedule.dart';


import 'package:sqflite/sqflite.dart';

class ScheduleService {


Database? _database;

Future<Database> get database async {


if (_database != null) return _database!;


_database = await openDatabase(


'schedule.db',


version: 1,


onCreate: (db, version) async {


await db.execute('''


CREATE TABLE schedule (


id INTEGER PRIMARY KEY AUTOINCREMENT,


title TEXT NOT NULL,


date TEXT NOT NULL,


description TEXT


)


''');


},


);


return _database!;


}

Future<void> addSchedule(Schedule schedule) async {


final db = await database;


await db.insert('schedule', schedule.toMap());


}

Future<List<Schedule>> getAllSchedules() async {


final db = await database;


final List<Map<String, dynamic>> maps = await db.query('schedule');


return List.generate(maps.length, (i) {


return Schedule.fromMap(maps[i]);


});


}

// 其他方法,如更新和删除日程...


}


4. 构建用户界面

在 `lib/main.dart` 文件中,构建用户界面:

dart

import 'package:flutter/material.dart';


import 'package:schedule_app/service/schedule_service.dart';


import 'package:schedule_app/model/schedule.dart';

void main() {


runApp(MyApp());


}

class MyApp extends StatelessWidget {


@override


Widget build(BuildContext context) {


return MaterialApp(


title: 'Schedule App',


theme: ThemeData(


primarySwatch: Colors.blue,


),


home: ScheduleListPage(),


);


}


}

class ScheduleListPage extends StatelessWidget {


final ScheduleService _scheduleService = ScheduleService();

@override


Widget build(BuildContext context) {


return Scaffold(


appBar: AppBar(


title: Text('Schedule List'),


),


body: FutureBuilder<List<Schedule>>(


future: _scheduleService.getAllSchedules(),


builder: (context, snapshot) {


if (snapshot.connectionState == ConnectionState.waiting) {


return Center(child: CircularProgressIndicator());


} else if (snapshot.hasError) {


return Center(child: Text('Error: ${snapshot.error}'));


} else {


return ListView.builder(


itemCount: snapshot.data!.length,


itemBuilder: (context, index) {


final schedule = snapshot.data![index];


return ListTile(


title: Text(schedule.title),


subtitle: Text(schedule.date.toString()),


trailing: IconButton(


icon: Icon(Icons.delete),


onPressed: () {


// 删除日程的逻辑...


},


),


);


},


);


}


},


),


floatingActionButton: FloatingActionButton(


onPressed: () {


// 添加新日程的逻辑...


},


child: Icon(Icons.add),


),


);


}


}


5. 运行和测试

在终端中运行以下命令来启动应用:

bash

flutter run


现在,你应该能够在 Flutter 模拟器或真实设备上看到日程列表页面。

总结

本文通过 Dart 语言和 Flutter 框架,实现了一个简单的日程安排系统示例。这个示例展示了 Dart 在构建跨平台移动应用中的能力,同时也为读者提供了一个日程管理的基本框架。在实际应用中,可以根据需求进一步扩展和优化这个系统。