Простые приложения на Dart
Простые приложения на Dart
Dart знаком по Flutter, но консольные скрипты (dart run) полезны для утилит и прототипов API. Стандартные библиотеки: dart:io, dart:convert.
Как запускать примеры из главы
- Файл:
bin/main.dartв проектеdart create cliили один файлscript.dart. - Команда:
dart run script.dartилиdart run bin/main.dart. - Нужно: Dart SDK 3+ (
dart --version).
Генератор паролей
Как запустить
- Файл:
password.dart - Команда:
dart run password.dart - Результат: пароль в консоли.
import 'dart:math';
String generatePassword([int length = 16]) {
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#\$%';
final rand = Random.secure();
return List.generate(length, (_) => chars[rand.nextInt(chars.length)]).join();
}
void main() => print(generatePassword());
Сортировщик файла
import 'dart:io';
Future<void> sortFile(String input, String output) async {
final lines = await File(input).readAsLines();
final cleaned = lines.map((l) => l.trim()).where((l) => l.isNotEmpty).toList()..sort();
await File(output).writeAsString('${cleaned.join('\n')}\n');
}
Калькулятор
double? calculate(double a, double b, String op) {
switch (op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return b == 0 ? null : a / b;
default: return null;
}
}
Трекер задач (jsonEncode)
import 'dart:convert';
import 'dart:io';
class Task {
final int id;
final String title;
bool done;
Task({required this.id, required this.title, this.done = false});
Map<String, dynamic> toJson() => {'id': id, 'title': title, 'done': done};
factory Task.fromJson(Map<String, dynamic> j) =>
Task(id: j['id'], title: j['title'], done: j['done'] ?? false);
}
Future<List<Task>> load(String path) async {
if (!await File(path).exists()) return [];
final list = jsonDecode(await File(path).readAsString()) as List;
return list.map((e) => Task.fromJson(e as Map<String, dynamic>)).toList();
}
HTTP-сервер (HttpServer)
import 'dart:convert';
import 'dart:io';
Future<void> main() async {
final server = await HttpServer.bind('127.0.0.1', 8080);
await for (final req in server) {
req.response
..headers.contentType = ContentType.json
..write(jsonEncode({'ok': true, 'time': DateTime.now().toIso8601String()}))
..close();
}
}
Характерный пример — Future и async/await
Future<int> fetchLength(Uri url) async {
final client = HttpClient();
try {
final req = await client.getUrl(url);
final res = await req.close();
final body = await res.transform(utf8.decoder).join();
return body.length;
} finally {
client.close();
}
}
Асинхронность встроена в язык — основа Flutter и серверного Dart.
См. также: Flutter в разделе 4-code-dev
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). История Dart - возникновение языка в Google и его развитие как основы для Flutter-экосистемы. Инкапсуляция через _, late, конструкторы, factory, const, абстрактные классы, миксины и интерфейсы в Dart. Dart выглядит как Java или C#, но есть свои привычки: точка с запятой в конце строки не обязательна, строки в "...", многострочные литералы '''. Основы Dart - точка входа `main`, базовый синтаксис и старт построения приложений на языке. Runtime Dart — система типов, isolates, event loop, JIT/AOT, сборка мусора, SDK и связка с Flutter. Flutter - экосистема Dart для кроссплатформенной UI-разработки, сборки и тестирования приложений. Типизация, набор правил определения типа данных значений языка. Условия, циклы, switch, арифметика, логика и null-aware операторы Dart — с примерами для Dart 3. Функция — это именованный фрагмент кода, который принимает входные данные, выполняет определённую последовательность действий и может возвращать результат. Гайд по установке и настройке с написанием первой программы и её запуском. Switch expressions, сопоставление с образцом для record, списков, Map и sealed-типов — исчерпывающий разбор вариантов в Dart 3. Консольный ввод-вывод, работа с файлами, JSON и базовый HTTP-клиент и сервер через dart:io — Dart вне Flutter.История языка Dart
Классы и ООП в Dart
Синтаксис и пунктуация в Dart
Основы языка Dart
Архитектура платформы Dart
Flutter
Типы данных и безопасность типов
Управляющие конструкции и операторы Dart
Функции и асинхронность
Первая программа на Dart
Паттерны и switch в Dart 3
Консоль, файлы и HTTP в Dart