Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flutterハンズオン 2

Flutterハンズオン 2

Aya Ebata

August 19, 2024
Tweet

More Decks by Aya Ebata

Other Decks in Technology

Transcript

  1. late - 遅延初期化 - 変数の宣言後に初期化される late String description; void main()

    { description = 'Feijoada!'; // ここでdescriptionを初期化 print(description); }
  2. 定数 - constを使用する - 値の変更はできない - コンパイル時に値を確定する const bar =

    1000000; // Unit of pressure (dynes/cm2) const double atm = 1.01325 * bar; // Standard atmosphere
  3. if if (year >= 2001) { print('21st century'); } else

    if (year >= 1901) { print('20th century'); }
  4. for for (var i = 1; i <= 10; i++)

    { print(i); } var collections = [1, 2, 3]; for (final collection in collections) { print(collection); }
  5. forEach var collection = [1, 2, 3]; collection.forEach((val) => print(val));

    // 1 2 3 // 以下は省略した書き方 collection.forEach(print);
  6. 練習問題1 import 'dart:math'; void main() { // 1. Stringのresult変数を定義する //

    以下はtrue/falseをランダムに生成するメソッド var random = Random().nextBool(); // 2. もしrandom変数がtrueならresult変数に「結果はtrueです」を // 入れ、falseなら「結果はfalseです」を入れる // 3. result変数を出力する }
  7. 練習問題1 解答例 import 'dart:math'; void main() { String result; var random

    = Random().nextBool(); if (random) { result = '結果はtrueです'; } else { result = '結果はfalseです'; } print(result); }
  8. 名前付き引数 - requiredをつけると関数呼び出し時に名前付き引数での呼び出しが必須 になる void enableFlags( {required bool bold, required

    bool hidden} ) {...} enableFlags(bold: true, hidden: false); enableFlags(bold: true); // hiddenがないので怒られる
  9. Optional positional parameters - []で囲むとオプショナルな引数になる String say(String from, String msg,

    [String? device]) { var result = '$from says $msg'; if (device != null) { result = '$result with a $device'; } return result; } say('Bob', 'Howdy'); // 「Bob says Howdy」が返却される say('Bob', 'Howdy', 'smoke signal'); // 「Bob says Howdy with a smoke signal」が返却される
  10. 第一級オブジェクト - 関数を別の関数のパラメータとして渡すことができる void printElement(int element) { print(element); } var

    list = [1, 2, 3]; list.forEach(printElement); // 以下と同じ意味になる list.forEach((val) => printElement(val));
  11. 無名関数 - 以下でいうと、mapの中身が無名関数 const list = ['apples', 'bananas', 'oranges']; var

    uppercaseList = list.map((item) { return item.toUpperCase(); }).toList();
  12. 練習問題2 - 関数を使って、lateが遅延初期化していることを確認する String getOrder() { // 1. 「注文が入りました」と出力する //

    2. 「ラーメン」を返却する } void main() { // 3. late変数orderを定義、初期値はgetOrder関数を指定 // 4. order変数を出力する }
  13. 練習問題2 遅延初期化の確認 - 関数を使って、lateが遅延初期化していることを確認する void main() { // 1. lateを削除して実行 ->

    出力されるものを確認 late var order = getOrder(); // 2. 以下をコメントアウトして実行 -> 出力されるものを確認 print(order); // 3. order変数にまたlateをつけて実行 -> 出力されるものを確認 }
  14. 練習問題3 // 1. 以下の条件を持つ、intを返却するadd関数を作成する // - 名前付き引数 // - intの引数first、関数を呼び出す際に指定必須

    // - intの引数second、nullable // - intの引数third、デフォルト値が10 // - first、second、thirdを足した数を返却する
  15. 練習問題3 解答例 int add({required int first, int? second, int third =

    10}) { return first + (second != null ? second : 0) + third; }
  16. 練習問題3 解答例 void main() { print(add(first: 1, second: 2, third: 3));

    // 6 print(add(first: 1, second: 2)); // 13 print(add(first: 1)); // 11 }
  17. 練習問題4 // 1. 以下を満たす関数を作成する void main() { ramen('硬め', '濃いめ', '多め');

    // 「麺: 硬め, 味: 濃いめ, 油: 多め」が出力される ramen(); // 「麺: 普通, 味: 普通, 油: 普通」が出力される }
  18. 練習問題4 解答例 void ramen([ String noodle = '普通', String taste =

    '普通', String oil = '普通' ]) { print('麺: $noodle, 味: $taste, 油: $oil')); }
  19. 練習問題5 解答例2 - 10を掛けたListを作成し、最後に出力をする例 void main() { const list = [1,

    2, 3]; var addedList = list.map((item) => item * 10).toList(); print(addedList); }