初心者と学ぶFlutter第3回:Dartの基本文法

初心者と学ぶFlutter

はじめに

前回はFlutterの基本ウィジェットについて学びました。

初心者と学ぶFlutter第2回:基本ウィジェット徹底解説
Flutter初心者向けに、TextやContainerなど基本ウィジェットを解説。開発効率を上げるHot Reloadやデバッグ方法も紹介。

今回はFlutterの開発言語であるDartを学びます。

Flutterの開発言語であるDartは、シンプルでモダンな構文を持ち、学習がしやすい言語です。Flutterを使いこなすためには、まずこのDartの基本文法を理解することが重要です。今回は、Dartの基本的なデータ型、制御構文、関数、クラス、リスト、マップの使い方、さらには非同期処理の基礎であるasyncawaitについて、初心者にもわかりやすく解説していきます。

Dartの基本データ型

Dartには、基本的なデータ型がいくつかあります。それぞれのデータ型をしっかり理解しておくことで、効率的なプログラムを作成することができます。

主なデータ型

  • int: 整数を扱います。
  • double: 小数を扱います。
  • String: 文字列を扱います。
  • bool: 真偽値(trueまたはfalse)を扱います。
  • List: 複数のデータを順序付けて扱うリスト型です。
  • Map: キーと値のペアでデータを管理します。
Dart
void main() {
  int myInt = 42;
  double myDouble = 3.14;
  String myString = "Hello, Dart!";
  bool isFlutterAwesome = true;

  print(myInt); // 42
  print(myDouble); // 3.14
  print(myString); // Hello, Dart!
  print(isFlutterAwesome); // true
}

制御構文

プログラムは、条件によって動作を変えたり、繰り返し処理を行ったりするための制御構文を持っています。Dartでも、他のプログラミング言語と同様に、制御構文が用意されています。

条件分岐(if / else)

条件に基づいて処理を分岐させるための構文です。

Dart
void main() {
  int score = 85;

  if (score >= 90) {
    print("Excellent!");
  } else if (score >= 70) {
    print("Good Job!");
  } else {
    print("Try harder next time.");
  }
}

繰り返し処理(forループ)

Dartでは、for文を使って一定の回数繰り返す処理を行えます。

Dart
void main() {
  for (int i = 0; i < 5; i++) {
    print("This is loop iteration $i");
  }
}

繰り返し処理(whileループ)

条件を満たす限り、繰り返し処理を行います。

Dart
void main() {
  int i = 0;
  
  while (i < 3) {
    print("i is $i");
    i++;
  }
}

関数

Dartでは、関数を使ってコードを再利用可能にします。関数を使うことで、プログラムの整理や可読性の向上を図ることができます。

関数の定義と呼び出し

  • greet関数は、nameという引数を受け取って、挨拶メッセージを表示します。
  • Dartの関数は、値を返さない場合にはvoidを使用します。
Dart
void greet(String name) {
  print("Hello, $name!");
}

void main() {
  greet("Flutter Beginner");
}

戻り値のある関数

  • add関数は2つの整数を足し合わせ、その結果を返します。
Dart
int add(int a, int b) {
  return a + b;
}

void main() {
  int result = add(5, 3);
  print("Result: $result"); // Result: 8
}

クラス

Dartはオブジェクト指向言語であり、クラスを使ってデータとその振る舞いをまとめることができます。クラスは、オブジェクトの設計図のようなもので、複雑なデータや機能を整理するのに役立ちます。

クラスの定義とオブジェクトの作成

Dart
class Person {
  String name;
  int age;

  // コンストラクタ
  Person(this.name, this.age);

  // メソッド
  void introduce() {
    print("Hi, my name is $name and I am $age years old.");
  }
}

void main() {
  // Personクラスのインスタンスを作成
  Person person = Person("Alice", 25);
  person.introduce();  // Hi, my name is Alice and I am 25 years old.
}

クラスのポイント

  • クラスはデータとその操作をまとめたものです。
  • Dartではコンストラクタを使って、オブジェクトを初期化します。

リストとマップ

Dartには、データをまとめて扱うためのコレクションとしてリストマップが用意されています。

リスト(List)

リストは、順序付けられた要素の集合です。複数のデータを格納し、インデックスを使ってアクセスします。

Dart
void main() {
  List<String> fruits = ["Apple", "Banana", "Orange"];
  
  print(fruits[0]); // Apple
  fruits.add("Grapes");
  print(fruits); // [Apple, Banana, Orange, Grapes]
}

マップ(Map)

マップは、キーと値のペアを使ってデータを格納します。

Dart
void main() {
  Map<String, int> scores = {
    "Alice": 85,
    "Bob": 92,
    "Charlie": 78,
  };

  print(scores["Bob"]); // 92
}

非同期処理(async と await)

非同期処理を扱うには、asyncawaitを使います。これにより、時間のかかる処理(例:ネットワークリクエスト)を待たずにプログラムを進行させ、結果を待つことができます。

非同期関数の定義

Dart
Future<void> fetchData() async {
  print("Fetching data...");
  await Future.delayed(Duration(seconds: 2));
  print("Data fetched!");
}

void main() async {
  await fetchData();
  print("Process completed.");
}

async/awaitのポイント

  • asyncを使うことで、非同期関数を定義できます。
  • awaitは、非同期処理の完了を待機し、処理が終わったら次のコードを実行します。
  • Future は、非同期処理の結果を表すオブジェクトです。

まとめ

今回の記事では、Dartの基本文法について学びました。Flutterでのアプリ開発には、Dartの理解が不可欠です。以下の項目をしっかり理解しておくと、今後のFlutter開発がスムーズに進められます。

この記事のポイント

  1. データ型: intdoubleStringboolなど、基本的な型を理解。
  2. 制御構文: ifforなどを使ってプログラムの流れを制御。
  3. 関数: 再利用可能なコードを作成し、効率的なプログラミングを実現。
  4. クラス: オブジェクト指向プログラミングを理解し、複雑なデータを整理。
  5. リストとマップ: データをまとめて管理する方法を学習。
  6. 非同期処理: asyncawaitを使って、スムーズに非同期処理を実行。

次回は、Flutterでの状態管理を学びます。

第4回はこちら

初心者と学ぶFlutter第4回:State管理の基本
Flutterでの基本的なState管理を初心者向けに解説。StatefulWidgetとsetStateを使った動的なUI更新方法を丁寧に紹介します。

コメント

タイトルとURLをコピーしました