我想用模型的 isUserRegistered 动态更改屏幕。
如果 isUserRegistered 为 True,我想显示在单击时将 isUserRegistered 设置为 false 的 Icon。如果 isUserRegistered 为 False,我想隐藏图标。
我尝试使用setState
,但小部件没有改变。我认为在Widget里面设置可能不好isUserRegistered = sites.isUserRegistered;
,但我不知道如何改进它。
请帮助我。
class Sample extends StatefulWidget {
@override
_SampleState createState() => _SampleState();
}
class _SampleState extends State<Sample> {
@override
bool isUserRegistered = false;
Widget build(BuildContext context) {
create: (_) => SiteModel()..fetchSites(),
child: Scaffold(
resizeToAvoidBottomPadding: false,
appBar: AppBar(
title: Text(
'Title',
),
),
drawer: CustomDrawer(),
body: Consumer<SiteModel>(
builder: (context, model, child) {
final sites = model.sites;
isUserRegistered = sites.isUserRegistered;
return ListView(
leading: ... (abridgement)
subtitle: ... (abridgement)
trailing: !isUserRegistered
? IconButton(
icon: Icon(Icons.add_circle_outline),
onPressed: () {
Provider.of<UserModel>(context, listen:false).update UserRegistered(widget.siteId) // update UserRegistered
SetState(({
isUserRegistered = true;
}))
}
),
:
);
}
)
);
}
}