回答編集履歴
1
読みやすく変更
answer
CHANGED
@@ -1,4 +1,15 @@
|
|
1
|
+
メソッドはクラスの中で作成するものだと思います。
|
2
|
+
setStateは状態(state)を持つクラスの中でのみ使えるはずなので、別ファイルでsetStateを含むメソッドを記述していたとしても、流用することは難しいと考えます。
|
3
|
+
以上を前提に、3つほどsetStateを活用したパターンを作ってみました。
|
4
|
+
|
5
|
+
①メソッド切り出しパターン
|
6
|
+
②クラスとしてcomponentを分割するパターン
|
7
|
+
③setStateの中で、関数の戻り値を応用するパターン
|
8
|
+
|
9
|
+
印象としては②が一般的かと思います。可読性もよく、パフォーマンスも優れていると思います。
|
10
|
+
|
1
|
-
|
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
|
-
|
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
|
-
|
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}) {
|