颤抖的通知列列列者不断地重建
这是我与数据库通信的我的服务功能
Future<News?> getNewsList(String token) async {
var url = Uri.tryParse('${baseUrl}get-news-list');
var response =
await http.post(url!, headers: {'Authorization': 'Bearer $token'});
if (response.statusCode == 200) {
var map = json.decode(response.body);
var list = News.fromJson(map);
print("map:${list.data![0]}");
return News.fromJson(map);
} else {
return News(message: null, status: false, data: null);
}
}
这是我使用MVVM模式的ViewModel
class NewsViewModel extends ChangeNotifier {
ApiOp api = ApiOp();
Future<List<NewsModel?>?> getNews() async {
String token ="token-here";
var map = await api.getNewsList(token);
List<NewsModel?>? list = map!.data;
print("object:${list![0]!.title}");
notifyListeners();
return list;
类 }
在这里我在视图上显示数据的位置,
Consumer<NewsViewModel?>(
builder: (context, value, child) => FutureBuilder<dynamic>(
future: value!.getNews(),
builder: (context, snapshot) {
List? list = snapshot.data;
print("list:$list");
return ListView.builder(
itemCount: 2,
itemBuilder: (context, index) {
return FirsatWidget(
title:"",
date: "",
photoUrl: "lib/assets/temp/4.jpg",
);
},
);
}),
),
但是当我运行应用程序时,一些打印功能在调试中像这些打印一样垃圾邮件 打印(“对象:$ {list![0]!。title}”); 打印(“地图:$ {list.data![0]}”); 该代码是连续将帖子发送到服务器还是只是重建消费者
This is my service function that communicate with the database
Future<News?> getNewsList(String token) async {
var url = Uri.tryParse('${baseUrl}get-news-list');
var response =
await http.post(url!, headers: {'Authorization': 'Bearer $token'});
if (response.statusCode == 200) {
var map = json.decode(response.body);
var list = News.fromJson(map);
print("map:${list.data![0]}");
return News.fromJson(map);
} else {
return News(message: null, status: false, data: null);
}
}
This my viewModel class I am using mvvm pattern
class NewsViewModel extends ChangeNotifier {
ApiOp api = ApiOp();
Future<List<NewsModel?>?> getNews() async {
String token ="token-here";
var map = await api.getNewsList(token);
List<NewsModel?>? list = map!.data;
print("object:${list![0]!.title}");
notifyListeners();
return list;
}
}
And here where I show the data on the view
Consumer<NewsViewModel?>(
builder: (context, value, child) => FutureBuilder<dynamic>(
future: value!.getNews(),
builder: (context, snapshot) {
List? list = snapshot.data;
print("list:$list");
return ListView.builder(
itemCount: 2,
itemBuilder: (context, index) {
return FirsatWidget(
title:"",
date: "",
photoUrl: "lib/assets/temp/4.jpg",
);
},
);
}),
),
But when I run the app some print function spamming in the debug like these prints
print("object:${list![0]!.title}");
print("map:${list.data![0]}");
Is this code continuously send post to the server or just rebuilding the consumer
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在连续将HTTP重新确定到服务器的
。您不需要使用
消费者&lt; newsViewModel?&gt;
andnotifyListeners();
,因为您正在使用未来获取数据的FutureBuilder。尝试此代码:
并注释NotifyListeners()
让我知道您是否有问题并且仍然有重建。
You are continuosly sending http reqests to your server.
You don't need to use
Consumer<NewsViewModel?>
andnotifyListeners();
because you are using FutureBuilder which gets data from that future.Try this code:
And comment notifyListeners()
Let me know if you have issues and still have rebuilds.