1

我想用模型的 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;
                  }))
                }
              ),
            : 
          );
        }
      )
    );
  }
}
4

0 回答 0