我正在使用mobx,并將代碼分成2個indvidualdata和indvidualdata提供者,并且有一個用mobx自動生成的代碼。 Listview.builder不會加載資料,直到我熱重新加載代碼(VSCode)。
class IndividualDataState extends State< IndividualData> {
@override>
void initState() {
super.initState()。
setup()。
sl<IIndividualDataProvider>()?.initReporting(context)。
}
@override
Widget build(BuildContext context) {
return Observer(
builder: (_) => Scaffold(
backgroundColor: Colors.gray[100] 。
appBar: AppBar(
標高。0,
centerTitle: true,
標題。Text("All Data")。
backgroundColor: PRIMARY,
),
身體。堆疊(
children: <Widget>[
ListView.builder(
itemCount: sl<IIndividualDataProvider>(). entries.length == null ?
? 0 ?
: sl<IIndividualDataProvider>(). entries.length。
itemBuilder。(BuildContext context, int index) {
return new ListTile(
標題。new Text(sl<IIndividualDataProvider> ()
.條目[索引]
.條目
.toString())。
副標題。new Text(sl<IIndividualDataProvider>()
.條目[索引]
.createdAt
.toString())。
);
},
),
],
),
),
);
}
}
提供者
class IndividualDataProvider = IIndividualDataProvider
with _$IndividualDataProvider;
抽象 class IIndividualDataProvider with Store {
@observable
bool isLoading = false。
@observable
List tags = [];
@observable
List<IndvidualReadings> entries = [];
@action
Future initReporting(context) async {
try {
isLoading = true;
回應 _readings = await sl<IIndividualDataService>() .getAllRmssd();
Map<String, dynamic> map = _readings.data。
List<dynamic> data = map["readings"/span>]。
if (data != null) {
data.forEach((v) {
IndvidualReadings tempRead = IndvidualReadings.fromJson(v)。
entries.add(tempRead);
});
}
isLoading = false;
} catch (err) {
isLoading = false;
print(err.toString())。
}
}
}
class IndividualReadings {
double entry。
String createdAt;
List<ReadingTags> tags = []。
IndvidualReadings({this.entry, this.createdAt, this.tags}) 。
factory IndvidualReadings.fromJson(Map<String, dynamic> json) {
var list = json['tags'] as List;
print(list.runtimeType)。
List<ReadingTags> tagsList =
list.map((i) => ReadingTags.fromJson(i)).toList()。
return IndvidualReadings(
entry: json['entry'], createdAt: json['created_at'], tags: tagsList)。)
}
}
class ReadingTags{
int id;
String tagName。
ReadingTags({this.id, this.tagName})。)
ReadingTags.fromJson(Map<String, dynamic> json) {
id = json['id']。
tagName = json['tag_name']。
}
}
當我點擊打開該頁面時,它是空白的。我進行了幾次列印,看看資料是否被API拉動,結果列印成功了。 然后當我熱重新加載時(我通常按Ctrl S),資訊被正確加載,并且ListTile被呈現。
我完全不知道為什么會發生這種情況。希望得到任何幫助。
uj5u.com熱心網友回復:
你的entries應該是一個ObservableList - 然后只有Observer部件會自動重建entries串列的變化。
...
@observable
ObservableList<IndvidualReadings> entries = ObservableList;
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/315507.html
標籤:
上一篇:飄動中的自定義觸點選擇
