teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

読みやすく変更

2021/03/02 09:26

投稿

Rassy
Rassy

スコア44

answer CHANGED
@@ -1,4 +1,15 @@
1
+ メソッドはクラスの中で作成するものだと思います。
2
+ setStateは状態(state)を持つクラスの中でのみ使えるはずなので、別ファイルでsetStateを含むメソッドを記述していたとしても、流用することは難しいと考えます。
3
+ 以上を前提に、3つほどsetStateを活用したパターンを作ってみました。
4
+
5
+ ①メソッド切り出しパターン
6
+ ②クラスとしてcomponentを分割するパターン
7
+ ③setStateの中で、関数の戻り値を応用するパターン
8
+
9
+ 印象としては②が一般的かと思います。可読性もよく、パフォーマンスも優れていると思います。
10
+
1
- ```home_screen.dart
11
+ home_screen.dart
12
+ ```dart
2
13
  import 'package:flutter/material.dart';
3
14
  import 'package:method_test_app/component.dart';
4
15
  import 'utilities.dart';
@@ -81,7 +92,9 @@
81
92
 
82
93
  ```
83
94
 
84
- ```components.dart
95
+ components.dart
96
+ 新しくReusableButtonを作成しています。その中で、VoidCallback(戻り値のないタイプの関数)を変数として組み込んでいます。
97
+ ```dart
85
98
  import 'package:flutter/material.dart';
86
99
 
87
100
  class ReusableButton extends StatelessWidget {
@@ -102,7 +115,10 @@
102
115
 
103
116
  ```
104
117
 
105
- ```utilities.dart
118
+ utilities.dart
119
+ 変数messageの内容を引数として受け取り、String型の戻り値を返しています。
120
+
121
+ ```dart
106
122
  import 'package:flutter/material.dart';
107
123
 
108
124
  String editMessage({@required String message}) {