Flutter 为什么小部件和onpress事件不';不刷新? Widget facebooklinkcreds(){ 回归未来建设者( 未来:firebasehandler.checklink(FacebookAuthProvider.providerId), 生成器:(上下文,快照){ 列出儿童名单; 如果(snapshot.connectionState==connectionState.waiting|| snapshot.connectionState==connectionState.done){ 儿童=[ 列表砖( 标题:文本(“Facebook”), 拖尾:扁平按钮( 子级:(snapshot.data==FacebookAuthProvider.providerId) ?文本(“断开”) :文本(“连接”), onPressed:()异步{ 设置状态(){ if(snapshot.data==FacebookAuthProvider.providerId){ 无链接证书对话( FacebookAuthProvider.providerId); }否则{ firebasehandler.linkfacebook(); } }); }), ), ]; }else if(snapshot.connectionState==connectionState.none){ 打印(“未连接”); }否则{ 返回循环ProgressIndicator(); } 返回中心( 子:列( mainAxisAlignment:mainAxisAlignment.center, crossAxisAlignment:crossAxisAlignment.center, 儿童:儿童,, ), ); }); }
单击后,onpressed和listtile小部件应立即刷新。。我正在使用一个有状态的小部件 link和unlink方法使用future。在上一个构建中,我使用了Flutter 为什么小部件和onpress事件不';不刷新? Widget facebooklinkcreds(){ 回归未来建设者( 未来:firebasehandler.checklink(FacebookAuthProvider.providerId), 生成器:(上下文,快照){ 列出儿童名单; 如果(snapshot.connectionState==connectionState.waiting|| snapshot.connectionState==connectionState.done){ 儿童=[ 列表砖( 标题:文本(“Facebook”), 拖尾:扁平按钮( 子级:(snapshot.data==FacebookAuthProvider.providerId) ?文本(“断开”) :文本(“连接”), onPressed:()异步{ 设置状态(){ if(snapshot.data==FacebookAuthProvider.providerId){ 无链接证书对话( FacebookAuthProvider.providerId); }否则{ firebasehandler.linkfacebook(); } }); }), ), ]; }else if(snapshot.connectionState==connectionState.none){ 打印(“未连接”); }否则{ 返回循环ProgressIndicator(); } 返回中心( 子:列( mainAxisAlignment:mainAxisAlignment.center, crossAxisAlignment:crossAxisAlignment.center, 儿童:儿童,, ), ); }); },flutter,dart,Flutter,Dart,单击后,onpressed和listtile小部件应立即刷新。。我正在使用一个有状态的小部件 link和unlink方法使用future。在上一个构建中,我使用了onpressed(()async=>//一些东西…它按照我想要的方式执行,但我不知道如何处理小部件onpressed()函数是否需要异步? 我不知道我的观点是否正确,但如果在onpressed()中调用的函数本身是异步的,这就足够了 我不知道这是否解决了您的问题,这只是我脑海中的想法。如果您能告诉我们这是什么语言和框架(或者更好的是,
onpressed(()async=>//一些东西…
它按照我想要的方式执行,但我不知道如何处理小部件onpressed()函数是否需要异步?
我不知道我的观点是否正确,但如果在onpressed()中调用的函数本身是异步的,这就足够了
我不知道这是否解决了您的问题,这只是我脑海中的想法。如果您能告诉我们这是什么语言和框架(或者更好的是,使用适当的标记),那将非常有用。此外,有关此小部件使用位置的更多上下文-很难看出周围环境如何影响您的代码。
Widget facebooklinkcreds() {
return FutureBuilder(
future: firebasehandler.checklink(FacebookAuthProvider.providerId),
builder: (context, snapshot) {
List<Widget> children;
if (snapshot.connectionState == ConnectionState.waiting ||
snapshot.connectionState == ConnectionState.done) {
children = <Widget>[
ListTile(
title: Text("Facebook"),
trailing: FlatButton(
child: (snapshot.data == FacebookAuthProvider.providerId)
? Text("Disconnect")
: Text("Connect"),
onPressed: () async {
setState(() {
if (snapshot.data == FacebookAuthProvider.providerId) {
unlinkcredentialdialog(
FacebookAuthProvider.providerId);
} else {
firebasehandler.linkfacebook();
}
});
}),
),
];
} else if (snapshot.connectionState == ConnectionState.none) {
print("not connected");
} else {
return CircularProgressIndicator();
}
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: children,
),
);
});
}