Android 如果列表为空,如何启用和禁用浮动操作按钮?
我使用的是FloatingActionButton,正如您所看到的,如果列表的大小大于0,我希望它出现,当列表的大小为0时,它消失 我有一个视图,可以将项目添加到该列表中 但不幸的是,该脚本只执行一次,并且它不会始终侦听列表的大小Android 如果列表为空,如何启用和禁用浮动操作按钮?,android,flutter,dart,Android,Flutter,Dart,我使用的是FloatingActionButton,正如您所看到的,如果列表的大小大于0,我希望它出现,当列表的大小为0时,它消失 我有一个视图,可以将项目添加到该列表中 但不幸的是,该脚本只执行一次,并且它不会始终侦听列表的大小 class EventDetailsPage extends StatelessWidget { final Event event; const EventDetailsPage({Key key, this.event}) : super(key: key
class EventDetailsPage extends StatelessWidget {
final Event event;
const EventDetailsPage({Key key, this.event}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
extendBodyBehindAppBar: true,
body: Provider<Event>.value(
value: event,
child: Stack(
fit: StackFit.expand,
children: <Widget>[
EventDetailsBackground(),
EventDetailsContent(),
],
),
),
floatingActionButton: new Visibility(
visible: qrList.length>0?true:false,
child: new FloatingActionButton.extended(
onPressed: (){
qrList = qrList.toSet().toList();
},
label: Text('GENERAR QR',),
backgroundColor: Colors.pink,
),
),
);
}
}```
class EventDetailsPage扩展了无状态小部件{
最终事件;
const EventDetailsPage({Key-Key,this.event}):super(Key:Key);
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(),
extendedBodyBehindAppBar:true,
正文:Provider.value(
价值:事件,
子:堆栈(
fit:StackFit.expand,
儿童:[
EventDetailsBackground(),
EventDetailsContent(),
],
),
),
浮动操作按钮:新的可见性(
可见:qrList。长度>0?真:假,
子级:新的FloatingActionButton.extended(
已按下:(){
qrList=qrList.toSet().toList();
},
标签:文本('GENERAR QR',),
背景颜色:Colors.pink,
),
),
);
}
}```
试试下面的方法,告诉我它是否有效
floatingActionButton: qrList.length>0 ? FloatingActionButton.extended(
onPressed: (){
qrList = qrList.toSet().toList();
},
label: Text('GENERAR QR',),
backgroundColor: Colors.pink,
): SizedBox.shrink(),
尝试以下方法并让我知道它是否有效
floatingActionButton: qrList.length>0 ? FloatingActionButton.extended(
onPressed: (){
qrList = qrList.toSet().toList();
},
label: Text('GENERAR QR',),
backgroundColor: Colors.pink,
): SizedBox.shrink(),
对于这种情况,您应该使用一些反应式state manage,看看getxpakage(),它有一些很好的方法来观察类似情况下列表中的更改 您也可以使用changeNotifier实现这一点,只需将列表放入扩展它的类中,并将浮动按钮放入消费者小部件中,每次列表添加/删除触发notifyListeners()的值。对于此aproach用户提供程序包() 使用getx包的示例:
class MyList扩展了GetxController{
最终qrList=List().obs;
}
//通过这种方式,您可以将其插入应用程序中,记住将其置于使用此列表的所有小部件之上
Get.put(MyList());
浮动操作按钮:Obx((){
final qrList=Get.find().qrList;
返回可见性(
可见:qrList.length>0?真:假,
子级:新的FloatingActionButton.extended(
已按下:(){
qrList=qrList.toSet().toList();
},
标签:文本(
“通用QR”,
),
背景颜色:Colors.pink,
));
});,
如果列表中有任何更改,按钮将更新。对于这种情况,您应该使用一些反应式状态管理,看看getx pacage()它有一些很好的方法来观察列表中的更改 您也可以使用changeNotifier实现这一点,只需将列表放入扩展它的类中,并将浮动按钮放入消费者小部件中,每次列表添加/删除触发notifyListeners()的值。对于此aproach用户提供程序包() 使用getx包的示例:
class MyList扩展了GetxController{
最终qrList=List().obs;
}
//通过这种方式,您可以将其插入应用程序中,记住将其置于使用此列表的所有小部件之上
Get.put(MyList());
浮动操作按钮:Obx((){
final qrList=Get.find().qrList;
返回可见性(
可见:qrList.length>0?真:假,
子级:新的FloatingActionButton.extended(
已按下:(){
qrList=qrList.toSet().toList();
},
标签:文本(
“通用QR”,
),
背景颜色:Colors.pink,
));
});,
如果列表中有任何更改,按钮将更新尝试使用无状态Widget的StatefullWidget实例,您的代码中是否有从列表中删除元素的点?是,但在另一个视图中,我可以从列表中添加或删除元素。请共享其余的代码。尝试使用无状态Widget的StatefullWidget实例,您的代码中是否有从列表中删除元素的点?是的,但是在另一个视图中,我可以从列表中添加或删除元素。您可以共享其余的代码吗只执行一次,如果我更改了列表的长度,则不会侦听。您需要使用setState更新有状态小部件中qrList.length的值,您正在调用此特定无状态小部件。我可以添加setState,即添加或消除值的操作在列表中,我将其保存在另一个文件中,我无法命令他们使用setStateT更改状态false或true,但脚本“qrList.length>0”只执行一次,如果我更改了列表的长度,则不会侦听。您需要使用setState更新有状态小部件中qrList.length的值,您正在调用此特定无状态小部件。我可以添加setState,即添加或消除值的操作在列表中,我将其保存在另一个文件中,我无法命令他们使用setState更改状态false或true