【Flutter Dart】リストの結合、展開

final friends = [
  'Mary',
  'Brad'
];

// 方法その1
final all1 = [
  'Bob',
  'Tom',
] + friends;
print(all1);

// output
// [Bob, Tom, Mary, Brad]

// 方法その2
final all2 = [
  'Bob',
  'Tom',
  ...friends
];
print(all2);
// output
// [Bob, Tom, Mary, Brad]

// 方法その3
final all3 = [
  'Bob',
  'Tom',
]..addAll(friends);
print(all3);
// output
// [Bob, Tom, Mary, Brad]

``

【Flutter Dart】繰り返し(while, for, for in)

while

  • 指定した条件がtrueの場合に処理をする
  • 1回も実行されないことがある
var i = 1;
while (i <= 5) {
  print('x' * i);
  i++;
}
print('Done');

// output
// x
// xx
// xxx
// xxxx
// xxxxx
// Done

for

  • 指定した条件がtrueの場合に処理をする
  • 1回も実行されないことがある
for (var i = 1; i <= 5; i++) {
  print('x' * i);
}
print('Done');

// output
// x
// xx
// xxx
// xxxx
// xxxxx
// Done

for in

  • 指定したリストの回数処理をする
  • 指定したリストが空の場合は1回も実行されない
for (var i in [1, 2, 3, 4, 5]) {
  print('x' * i);
}
print('Done');

// output
// x
// xx
// xxx
// xxxx
// xxxxx
// Done

<Flutter Dart>varとfinal、constの違い

var

  • 型推測できる
  • 型指定できない
  • 変更可能(1回以上値をセットできる)
// var
// 型推測できる
var name = 'Bob';  // 値が文字列なのでString型と推測される  
// 型指定できない
// var String lastName = 'Pit';  // コンパイルエラー
// 変更可能(1回以上値をセットできる)
name = 'Tom';
name = 'Mary';

final

  • 型推測できる
  • 型指定できる
  • 変更不可能(1回だけ値をセットできる)
  • varよりもfinalを使うほうがよい
// 型推測できる
final name = 'Bob';
// 型指定できる
final int age = 27;
// 変更不可能(1回だけ値をセットできる)
// name = 'Tom';  // コンパイルエラー

// varよりもfinalを使うほうがよい
// 変更される可能性があるためソースを読みにくい。追いにくい
// →バグを生み出しやすい。デバッグしづらい

const

  • 型推測できる
  • 型指定できる
  • コンパイル時に1回だけ値をセットできる
  • finalよりもconstを使うほうがよい
// const
// コンパイル時に1回だけ値をセットできる
// 型指定できる
const name = 'Bob';
// name = 'Tom';  // コンパイルエラー

// 型指定できる
const String lastName = 'Pit';

// 値が実行に評価され、コンパイル時に評価できないためコンパイルエラー
// const upperCaseName = name.toUpperCase();

// myAgeとyourAgeはconstなので、totalAgeもコンパイル時に評価可能なのでエラーにならない
const myAge = 1;
const yourAge = 2;
const totalAge = myAge + yourAge;

// finalよりもconstを使うほうがよい
// compile-time constant
// finalよりも実行パフォーマンスが高い

<Flutter Dart>文字列の検索・置換

文字列の検索・置換

// 元の文字列
String greeting = 'My name is Bob.';

// Bobを含むか
bool isBob = greeting.contains('Bob');
// Tomを含むか
bool isTom = greeting.contains('Tom');

print(greeting);
print(isBob);
print(isTom);

// output
// My name is Bob.
// true
// false

// 元の文字列のBobをTomに置換
greeting = greeting.replaceAll('Bob', 'Tom');
print(greeting);
print(isBob);
print(isTom);

// output
// My name is Tom.
// true
// false

<Flutter Dart>文字列の小文字・大文字変換

// 文字列
String title = 'Dart course';

// 文字列を小文字に変換
String lowerCaseTitle = title.toLowerCase();

// 文字列を大文字に変換
String upperCaseTitle = title.toUpperCase();

print(lowerCaseTitle);
print(upperCaseTitle);

// output
// dart course
// DART COURSE

<Flutter Dart>長い文字列に改行を入れる

下記のような長い文字列で改行を入れたい場合にどうするか?

print('My name is Bob.I am 18 years old.');

// output
// My name is Bob.I am 18 years old.

改行する場合は改行位置に\nを入れる

print('My name is Bob.\nI am 18 years old.');

// output
// My name is Bob.
// I am 18 years old.

トリプルダブルクォーテーションで文字列をくくる

print(
"""
My name is Bob. 
I am 18 years old.
"""
);

// output
// My name is Bob.
// I am 18 years old.

<Flutter Dart>特殊文字のエスケープ

シングルクォーテーションでくくっている文字列内にシングルクォーテーションがあった場合にはエラーとなります。これはひとつの例であり、特殊文字が含まれる場合は対応が必要となります。

print('I'm Bob');

// output
// Error: String starting with ' must end with '.
  print('I'm Bob');

文字列をダブルクォーテーションでくくる

print("I'm Bob");

// output
// I'm Bob

バックスラッシュをつける

print('I\'m Bob');

// output
// I'm Bob