1. プロジェクトの概要
このプロジェクトでは、DartPadを使用して簡単なTodoリストアプリケーションを作成します。このアプリケーションは、ユーザーがタスクを追加、表示、削除できる機能を提供します。
2. プロジェクトの構成
DartPadを開き、以下のコードを入力して実行します。DartPadは、ブラウザで dartpad.dev にアクセスして使用します。
1. Todoリストアプリケーションの基本構造
まず、基本的なHTMLとCSSを設定して、アプリケーションの構造を作成します。
Dart
import 'dart:html';
void main() {
querySelector('#output')?.appendHtml('''
<style>
body {
font-family: Arial, sans-serif;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
margin: 0;
background-color: #f5f5f5;
}
#todo-list {
margin-top: 20px;
width: 300px;
}
.todo-item {
display: flex;
justify-content: space-between;
background: white;
padding: 10px;
margin-bottom: 5px;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.todo-item button {
background: #ff6b6b;
border: none;
padding: 5px 10px;
color: white;
border-radius: 3px;
cursor: pointer;
}
input {
padding: 10px;
border-radius: 4px;
border: 1px solid #ddd;
width: calc(100% - 24px);
margin-bottom: 10px;
}
button {
padding: 10px;
border-radius: 4px;
border: none;
background-color: #4caf50;
color: white;
cursor: pointer;
width: calc(100% - 24px);
}
</style>
<div>
<h1>Todo List App</h1>
<input type="text" id="task-input" placeholder="Enter a task">
<button id="add-task">Add Task</button>
<div id="todo-list"></div>
</div>
''', treeSanitizer: NodeTreeSanitizer.trusted);
}
このコードは、HTMLとCSSを設定し、#output
要素に追加します。
2. Todoリストの機能の実装
次に、タスクの追加、表示、削除の機能を実装します。ユーザーが入力したタスクをリストに追加し、リストからタスクを削除できるようにします。
Dart
import 'dart:html';
void main() {
querySelector('#output')?.appendHtml('''
<style>
body {
font-family: Arial, sans-serif;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
margin: 0;
background-color: #f5f5f5;
}
#todo-list {
margin-top: 20px;
width: 300px;
}
.todo-item {
display: flex;
justify-content: space-between;
background: white;
padding: 10px;
margin-bottom: 5px;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.todo-item button {
background: #ff6b6b;
border: none;
padding: 5px 10px;
color: white;
border-radius: 3px;
cursor: pointer;
}
input {
padding: 10px;
border-radius: 4px;
border: 1px solid #ddd;
width: calc(100% - 24px);
margin-bottom: 10px;
}
button {
padding: 10px;
border-radius: 4px;
border: none;
background-color: #4caf50;
color: white;
cursor: pointer;
width: calc(100% - 24px);
}
</style>
<div>
<h1>Todo List App</h1>
<input type="text" id="task-input" placeholder="Enter a task">
<button id="add-task">Add Task</button>
<div id="todo-list"></div>
</div>
''', treeSanitizer: NodeTreeSanitizer.trusted);
List<String> tasks = [];
querySelector('#add-task')?.onClick.listen((_) {
InputElement? taskInput = querySelector('#task-input') as InputElement?;
String task = taskInput?.value ?? '';
if (task.isNotEmpty) {
tasks.add(task);
taskInput?.value = '';
renderTasks(tasks);
}
});
}
void renderTasks(List<String> tasks) {
Element? todoList = querySelector('#todo-list');
todoList?.children.clear();
for (String task in tasks) {
Element taskItem = DivElement()
..className = 'todo-item'
..innerHtml = '''
<span>$task</span>
<button>Delete</button>
''';
taskItem.querySelector('button')?.onClick.listen((_) {
tasks.remove(task);
renderTasks(tasks);
});
todoList?.append(taskItem);
}
}
このコードでは、以下の機能を実装しています:
- タスクの追加:ユーザーが入力したタスクをリストに追加します。
- タスクの表示:追加されたタスクを表示します。
- タスクの削除:ユーザーがタスクを削除できるようにします。
3. 完成したTodoリストアプリケーション
上記のコードをすべてDartPadに入力し、実行します。完成したTodoリストアプリケーションは、ユーザーがタスクを追加、表示、削除できるようになります。
Dart
import 'dart:html';
void main() {
querySelector('#output')?.appendHtml('''
<style>
body {
font-family: Arial, sans-serif;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
margin: 0;
background-color: #f5f5f5;
}
#todo-list {
margin-top: 20px;
width: 300px;
}
.todo-item {
display: flex;
justify-content: space-between;
background: white;
padding: 10px;
margin-bottom: 5px;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.todo-item button {
background: #ff6b6b;
border: none;
padding: 5px 10px;
color: white;
border-radius: 3px;
cursor: pointer;
}
input {
padding: 10px;
border-radius: 4px;
border: 1px solid #ddd;
width: calc(100% - 24px);
margin-bottom: 10px;
}
button {
padding: 10px;
border-radius: 4px;
border: none;
background-color: #4caf50;
color: white;
cursor: pointer;
width: calc(100% - 24px);
}
</style>
<div>
<h1>Todo List App</h1>
<input type="text" id="task-input" placeholder="Enter a task">
<button id="add-task">Add Task</button>
<div id="todo-list"></div>
</div>
''', treeSanitizer: NodeTreeSanitizer.trusted);
List<String> tasks = [];
querySelector('#add-task')?.onClick.listen((_) {
InputElement? taskInput = querySelector('#task-input') as InputElement?;
String task = taskInput?.value ?? '';
if (task.isNotEmpty) {
tasks.add(task);
taskInput?.value = '';
renderTasks(tasks);
}
});
}
void renderTasks(List<String> tasks) {
Element? todoList = querySelector('#todo-list');
todoList?.children.clear();
for (String task in tasks) {
Element taskItem = DivElement()
..className = 'todo-item'
..innerHtml = '''
<span>$task</span>
<button>Delete</button>
''';
taskItem.querySelector('button')?.onClick.listen((_) {
tasks.remove(task);
renderTasks(tasks);
});
todoList?.append(taskItem);
}
}
このコードは以下の機能を実現しています:
- タスクの追加:ユーザーが入力したタスクをリストに追加します。
- タスクの表示:追加されたタスクを表示します。
- タスクの削除:ユーザーがタスクを削除できるようにします。
3. 完成したTodoリストアプリケーション
上記のコードをすべてDartPadに入力し、実行します。完成したTodoリストアプリケーションは、ユーザーがタスクを追加、表示、削除できるようになります。
4. まとめ
この教科書では、DartPadを使用して簡単なTodoリストアプリケーションを作成する方法を学びました。基本的なHTMLとCSSの設定、イベントハンドリング、スタイリングの追加などを行いました。DartPadを使うことで、ローカル環境を構築することなく、簡単にDartのプログラミングを学習し、プロジェクトを実装することができます。