我想動態地呈現一個串列視圖。如果串列中的某個值發生了變化,我必須使用我的IDE手動熱多載應用程式,以便應用這些變化。我曾嘗試使用StreamBuilder,但其語法非常復雜。
以下是我的代碼:
ListView.builder(
物理學。NeverScrollableScrollPhysics(),
itemCount: myMap.length,
shrinkWrap: true,
itemBuilder: (context, index) {
return myMap.values.elementAt(index) == true ?
? 容器(
padding: EdgeInsets.only(left: 20, right: 20, top: 20)。)
孩子。容器(child: Text(myMap.keys.elementAt(index)))
: 容器()。
}),
我的有狀態小部件:
import 'package:flutter/material.dart'。
class NextWidget extends StatefulWidget{
NextWidget({Key? key}) : super(key: key);
_NextWidgetState createState() => _NextWidgetState()。
}
class _NextWidgetState extends State< NextWidget> {
>
Widget build(BuildContext context) {
return Container(
孩子。MaterialButton(onPressed: () {
setState(() {
myMap[1] = 'Modified Value'/span>。
}
}, child: Text('Modify'))。
);
}
}
uj5u.com熱心網友回復:
在你呼叫Next widget的地方,它與inkwell包在一起,并在inkwell下寫set stae方法,而不是Next widget
。 InkWell(
onTap: (){
setState(() {
// 寫你的代碼。
});
},
孩子。NextWidget()。
)
uj5u.com熱心網友回復:
你有兩種可能的方法:
parent widget傳遞一個函式到child widget。然后你可以用它來直接改變parent的state://在父部件中定義一個函式。
void parentSetState(){
setState((){})。
//也可以添加你自己的代碼。
}
//然后在子部件中使用此函式
MaterialButton(onPressed: () {
setState(() {
myMap[index] = index * 2;
widget.parentSetState()。
}
}, child: Text('Modify'))。
- 使用像
provider的狀態管理。就我個人而言,我更喜歡使用這種方法。見這個鏈接 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/315689.html
標籤:
