[Flutter] TIL 04


Dart Functions


ロボットがスーパーの牛乳を送ってくれればと言った.では、右に移動し、左に移動し、前に移動します...など多くの行為をして、私は自分で指導します.そうすると面倒なので、コードブロックでパッケージします.コードブロックは、一連のカッコ内のコードで表されます.
カッコにすべての指示が含まれている場合は、対応するコードブロックの名前を指定できます.
void getMilk() {
	leave house
    move right
    move left
    ...
}
関数呼び出し時に発生するすべてのことが含まれます.以下の関数に名前がついているので「Named function」と呼ばれます.함수 선언
void getMilk() { //doSomething }
以下の関数に名前がないので「Anonymousfunction」と呼ばれます.(匿名関数)
() { //doSomething }

ex)
onPressed: (){
                print('Left button got pressed');
       
함수 호출
getMilk();
🚓パラメータ付き関数
datetypeとパラメータ名を同時に記入する必要があります.함수 선언
void getMilk (int bottles) {
	double cost = bottles * 1.5;
}

--
void getMilk ({int numBottles}) {
	double cost = bottles * 1.5;
}
関数名の横にあるカッコでは、main関数に必要な値を直接入力できます.함수 호출
getMilk(2);

--
getMilk(numBottles: 2);
🚅矢印関数
単一のコマンドがある場合は矢印を使用します.2行以上の命令はできません.つまり、returnキーワードを使う意味は同じです.
void main() => runApp(XylophoneApp());
		↓↓↓
void main() {
	runApp(
    XylophoneApp()
    	);
}
매개변수가 있는 화살표 함수
int add(int n1, int n2) {
	return n1+n2;
}
		↓↓(동일한 의미임)
int add(int n1, int n2) => n1 + n2;

同じ位置にある画像を別の画像に変更します。



左のサイコロを5のサイコロに変えたいとします.Widget buildブロックにvar leftDiceNumber = 1;を作成します.
child: Image.asset('Images/dice1.png')),
		↓↓
child: Image.asset('Images/dice$leftDiceNumber.png')),
$の後に変数名を記入すればいいです.画像ファイル1,2,3...変数値に基づいて変更できるのは、使用する場合のみです.
Widgetコンストラクションブロックの外に変数(たとえば@overrideの真上)を宣言した場合、hot-reloadは実行されません.hot-reloadはコードブロックにのみ変更を反映するためです.だからコードブロックに変数を宣言しましょう!

Stateful Widget

class DicePage extends StatefulWidget {
  
  _DicePageState createState() => _DicePageState();
}

class _DicePageState extends State<DicePage> {
  int leftDiceNumber = 1;
  
  Widget build(BuildContext context) {
    return Center(
      child: Row(
        children: <Widget>[
          Expanded(
            child: TextButton(
                onPressed: (){
                  leftDiceNumber = 5;
                },
                child: Image.asset('images/dice$leftDiceNumber.png')),
          ),
          Expanded(
            child: TextButton(
                onPressed: (){
                  print('Right button got pressed');
                },
                child: Image.asset('images/dice1.png')),
          ),
        ],
      ),
    );
  }
}
このコードは、ステータスレスコードをコピーしてstateful形式で貼り付けられます.しかし、このコードは左サイコロを押すと5にはなりません.ステータスを更新するには、setStateメソッドを呼び出す必要があります.