8-4.DartPadを使った小規模プロジェクトの実装: コンソールベースのTodoリスト

1. プロジェクトの概要

このプロジェクトでは、DartPadを使用してコンソールベースのTodoリストアプリケーションを作成します。このアプリケーションは、ユーザーがタスクを追加、表示、削除できる機能を提供します。

2. Todoクラスの定義

まず、タスクを表すTodoクラスを定義します。このクラスには、タスクのタイトルと完了状態を持つプロパティがあります。

Dart
class Todo {
  String title;
  bool isCompleted;

  Todo(this.title, {this.isCompleted = false});

  @override
  String toString() {
    return '[${isCompleted ? 'x' : ' '}] $title';
  }
}

3. Todoリストの管理

次に、Todoリストを管理するための機能を追加します。タスクの追加、表示、削除を行うメソッドを実装します。

Dart
class TodoApp {
  List<Todo> todos = [];

  void addTodo() {
    print('Enter a task: ');
    String? title = stdin.readLineSync();
    if (title != null && title.isNotEmpty) {
      todos.add(Todo(title));
      print('Task added: $title');
    } else {
      print('Task cannot be empty.');
    }
  }

  void displayTodos() {
    if (todos.isEmpty) {
      print('No tasks available.');
    } else {
      print('Todo List:');
      for (int i = 0; i < todos.length; i++) {
        print('${i + 1}. ${todos[i]}');
      }
    }
  }

  void removeTodo() {
    displayTodos();
    if (todos.isNotEmpty) {
      print('Enter the number of the task to remove: ');
      int? index = int.tryParse(stdin.readLineSync() ?? '');
      if (index != null && index > 0 && index <= todos.length) {
        print('Task removed: ${todos[index - 1].title}');
        todos.removeAt(index - 1);
      } else {
        print('Invalid task number.');
      }
    }
  }

  void markTodoAsCompleted() {
    displayTodos();
    if (todos.isNotEmpty) {
      print('Enter the number of the task to mark as completed: ');
      int? index = int.tryParse(stdin.readLineSync() ?? '');
      if (index != null && index > 0 && index <= todos.length) {
        todos[index - 1].isCompleted = true;
        print('Task marked as completed: ${todos[index - 1].title}');
      } else {
        print('Invalid task number.');
      }
    }
  }
}

4. メインメニューの実装

ユーザーが操作できるメニューを作成します。ユーザーはタスクの追加、表示、削除、完了を選択できます。

Dart
import 'dart:io';

void main() {
  TodoApp app = TodoApp();
  bool isRunning = true;

  while (isRunning) {
    print('''
1. Add a task
2. Display all tasks
3. Remove a task
4. Mark a task as completed
5. Exit
    ''');

    print('Choose an option: ');
    String? choice = stdin.readLineSync();

    switch (choice) {
      case '1':
        app.addTodo();
        break;
      case '2':
        app.displayTodos();
        break;
      case '3':
        app.removeTodo();
        break;
      case '4':
        app.markTodoAsCompleted();
        break;
      case '5':
        isRunning = false;
        print('Exiting the Todo app.');
        break;
      default:
        print('Invalid choice. Please try again.');
    }
  }
}

5. アプリケーションの実行

DartPadでは直接このコードを実行できませんが、ローカル環境で実行する場合、以下のように行います。

ローカルでの実行方法

  1. Dart SDKをインストールします(インストール方法は公式サイトを参照してください)。
  2. 任意のディレクトリにプロジェクトフォルダを作成します(例:my_todo_app)。
  3. 上記のコードをmain.dartという名前のファイルに保存します。
  4. コマンドラインでプロジェクトフォルダに移動し、以下のコマンドを実行します。
Dart
dart run main.dart

6. まとめ

この教科書では、Dartを使用してコンソールベースのTodoリストアプリケーションを作成する方法を学びました。主要な機能として、タスクの追加、表示、削除、および完了を実装しました。DartPadを使用して基本的なコードを試したり、ローカル環境で実行することで、Dartのプログラミングスキルを向上させることができます。

コメントを残す