[英]no_logic_in_create_state abstract methods are false positives #2345
[英]Avoid no_logic_in_create_state warning when saving reference to State of StatefulWidget in Flutter
使用 Flutter,我在應用程序中顯示元素列表。
我有一個StatefulWidget
( ObjectList
),它在其State
( ObjectListState
) 中包含一個項目列表。
state 有一個方法 ( _populateList
) 來更新項目列表。
我希望在小部件上調用方法 ( updateList
) 時更新列表。
為此,我在小部件中保存了對 state 的引用 ( _state
)。 該值在createState
中設置。 然后可以從小部件本身調用 state 上的方法。
class ObjectList extends StatefulWidget {
const ObjectList({super.key});
static late ObjectListState _state;
@override
State<ObjectList> createState() {
_state = ObjectListState();
return _state;
}
void updateList() {
_state._populateList();
}
}
class ObjectListState extends State<ObjectList> {
List<Object>? objects;
void _populateList() {
setState(() {
// objects = API().getObjects();
});
}
// ... return ListView in build
}
問題是這會引發no_logic_in_create_state
警告。 由於我沒有“ 將數據傳遞給 State 對象”,我認為這很好,但我仍然想避免警告。
有沒有辦法做到這些?
no_logic_in_create_state
的情況下保存對 state 的引用。將updateList()
方法放在小部件中是沒有意義的。 無論如何你都不能調用它。 小部件是小部件樹的一部分,您不存儲或使用對它們的引用(與其他框架不同,例如 Qt)。
要更新小部件中的信息,請使用StreamBuilder
小部件並在構建 function 中創建要更新的小部件,將更新后的列表作為參數傳遞給小部件。
然后,將列表存儲在小部件中。 可能這可以作為無狀態小部件實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.