在没有 setstate 的情况下更改轮播更改的 AppBar 标题值
Posted
技术标签:
【中文标题】在没有 setstate 的情况下更改轮播更改的 AppBar 标题值【英文标题】:Change AppBar title value on carousel change without setstate 【发布时间】:2021-12-29 08:13:26 【问题描述】:我正在开发一个类似于 whatsapps 照片库的图库应用。当我的轮播滑块更改时,我希望应用栏标题更改。我使用 setstate 进行了尝试,但是因为我在显示对话框中显示了 carouselslider,所以它不起作用,我认为这可能会导致性能问题。我在项目中使用getx,没有setstate有什么办法吗?
这是我的 AppBar 小部件
showGeneralDialog(
context: context,
barrierDismissible: true,
barrierLabel: MaterialLocalizations.of(context)
.modalBarrierDismissLabel,
barrierColor: Colors.black45,
transitionDuration:
const Duration(milliseconds: 200),
pageBuilder: (BuildContext buildContext,
Animation animation,
Animation secondaryAnimation)
return Dismissible(
direction: DismissDirection.vertical,
key: const Key('key'),
onDismissed: (_) => Navigator.of(context).pop(),
child: Scaffold(
appBar: AppBar(title: Text(photoSender)),
而且脚手架的主体是一个carouselsliderbuilder,所以当轮播发生变化时,我希望photoSender变量发生变化。
有什么办法吗?
【问题讨论】:
您尝试过使用Obx
小部件吗??我认为您可以使用obs
作为字符串变量,最后使用Text()
小部件包装Obx
【参考方案1】:
将photoSender
变量声明为Rx<String>
:
final photoSender = Rx<String>("");
用Obx/GetX
包裹你的Text
小部件:
appBar: AppBar(title: Obx(()=>Text(photoSender.value))),
每当您的photoSender
变量的值发生变化时,它都会自动更新您应用栏中的文本。
更新值:
photoSender.value = "John";
【讨论】:
以上是关于在没有 setstate 的情况下更改轮播更改的 AppBar 标题值的主要内容,如果未能解决你的问题,请参考以下文章
如果在不使用 seState 的情况下更改状态,是不是会发生 Re-Render?