LoginSignup
1
2

More than 1 year has passed since last update.

Dart言語の基礎 #01 - データ型、変数・関数

Posted at

Flutterでアプリを開発するにあたって開発言語であるDartについて理解する必要があると考えたので、Dartの基礎を学習しはじめました。

Dartについて

FlutterはAndroid・iOS、デスクトップアプリを開発することが可能なフレームワークです。Flutterの開発には、Googleが開発したDartという言語を使います。Dartを極めて大雑把に要約すると、JavaScriptの拡張性・メンテナンス性を改善し大規模システムに適した仕様とした言語です。

メリットとしてはJavaScriptに似ているので学習ハードルが低いこと・Flutterに使用されているので将来性が高いことですが、デメリットは日本語情報がまだまだ少ないことです。

データ型・変数・関数

データ型の基礎

変数に使えるデータ型の基礎として、int, String, boolの3つがあります。これはそれぞれ整数・文字列・真偽値を扱うのに用いるデータ型です。
変数の定義は、データ型 変数名 = 値; の構文で行います。

void main(){
  int intVal = 123;
  String strVal = "Elen";
  bool boolVal = true;
  
  print(intVal);
  print(strVal);
  print(boolVal);
}
123
Elen
true

リスト型

リスト型を使うと、Pythonのコレクションの様に複数の値を格納できます。Pythonとは違い、リストに含まれるデータ型を明示する必要があります。

void main(){
  List<int> numberList = [0,1,3,4];
  List<String> nameList = ["Elen","Mikasa","Armin"];
  
  print(numberList);
  print(nameList);
  print(numberList[0]);
  print(nameList[1]);

}
[0, 1, 3, 4]
[Elen, Mikasa, Armin]
0
Mikasa

リスト型には、あとから値を加えることもできます。
また、イテレーターを使った処理を行うのにlengthメソッドをよく使います。

void main(){
  List<String> nameList = ["Elen","Mikasa","Armin"];
  nameList.add("Jean");
  print(nameList);
  print(nameList.length);
}
[Elen, Mikasa, Armin, Jean]
4

マップ型

キーに対応する値を格納するには、マップ型を使います。
マップ型は、Pythonの辞書型の様に値と値を1対1対応にしたい時に使います。

void main(){
  Map<int, String> nameMap = {1:"Elen", 2:"Mikasa"};
  
  print(nameMap);
  print(nameMap[1]);
  
  nameMap[3] = "Armin";
  print(nameMap[3]);
  
}
{1: Elen, 2: Mikasa}
Elen
Armin

型推論

変数を定義する際にvarで定義すると、型推論を行えます。
型推論とは、データの型を自動で割り振る機能です。

void main(){
  var name = "Elen";
  var number = 123
  
  print(name);
  print(number);
}
Elen
123

関数

関数とは、メソッド・関数処理をまとめたものです。

void main(){
  void printNumber(int x, int y){
    int number = 0;
    print(number + x + y);
  }
  
  printNumber(123, 567);
}
690

フューチャー関数

フューチャー関数は、非同期処理を行いたい時に使います。
非同期処理を行えば、時間のかかる処理による遅延を起こさずに指定時間後に確実に処理を実行できます。

void main(){
  Future<void> test() async{

    print("処理開始");
    //3行後に確実に終了させる
    Future.delayed(Duration(seconds:3)); 
    print("処理完了");
  }

  test();
}
処理開始
処理完了

ウィジェット

ウィジェットは、主にFlutterのUIを構成するコンポーネントです。
大雑把に表すと、UIを制作したい時に使うデータ型という理解をしています。DartPadでは、Flutterのパッケージをインポートすることもできます。

import "package:flutter/material.dart";

void main(){
  Widget txt = Text("Elen");
  Widget container = Container(width:10, height:5);
  Widget icon = Icon(Icons.keyboard);
  Widget column = Column();
}

Nullセーフティー

Dartでは、int・String等にnull値を格納するとエラーとなってしまいます。int?と記述すると、null値を格納できるnullセーフティーに対応した型にできます。また変数がnullである場合、どの値として処理するかというnullチェックもできます

void main(){
  int? num01 = null;
  String? num02 = null;
  
  void sum(int? x){
    //xがnullである場合は、0として処理する
    print((x ?? 0) + 1);
  }
  
  sum(num01);
}
1

今回は基礎の基礎であるデータ型・変数と関数について学びました。次回以降はfor文・if文、またオブジェクト指向な書き方などを学んでいきます。全3回ほどになる予定です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2