我不确定如何FutureBuilder
在构建树中与其他非异步元素一起实现一个元素。我正在使用 aConsumer
来监听 a 中的变化,这一事实ChangeNotifierprovider
使事情变得有些复杂。我可以同时使用提供者和 FutureBuilder 吗?在下面的代码中,我需要访问的相关未来是底部导航栏中的socialProvider.currentavatar
and 。socialProvider.currentname
Widget build(BuildContext context) {
var socialProvider = Provider.of<SocialProvider>(context);
return new MaterialApp(
home: new Scaffold(
body: _myPages[_selectedIndex],
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.home),
title: Text('Home'),
),
BottomNavigationBarItem(
icon: Consumer<SocialProvider>(
builder: (context, socialProvider, child) {
return Image.network(socialProvider.currentavatar);
}),
title: Consumer<SocialProvider>(
builder: (context, socialProvider, child) {
return Text(socialProvider.currentname);
}),
),
],
currentIndex: _selectedIndex,
onTap: _onItemTapped,
),
),
);
}
这是我SocialProvider with ChangeNotifier
课堂上的代码。
class SocialProvider with ChangeNotifier {
String currentname = loadCurrentName();
String currentavatar = loadCurrentAvatar();
loadCurrentName() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String currentname = await prefs.getString('currentname') ?? 'Anonymous';
return currentname;
}
loadCurrentAvatar() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String currentavatar = await prefs.getString('currentavatar') ?? "https://example.com/default.png";
return currentavatar;
}
}
如何实现 FutureBuilder 以便获取 socialProvider.currentname 和 socialProvider.currentavatar?