当前位置: 首页 > 知识库问答 >
问题:

Flutter:如何从可驳回到被驳回的上下文访问

吴均
2023-03-14

我正在尝试为Flutter中的一个可拒绝的列表项实现撤消,但在访问BuildContext时遇到了问题。

我有一个flutter列表,每个项目都是一张卡。该卡被包装在一个可解除卡中,允许用户刷卡解除该卡。Dismissible自动从列表中移除该项。Dismissible还有一个onDesceded事件--我使用这个事件更新Redux状态存储中的项(将isSesceded标志设置为true),然后显示一个包含撤消按钮的快捷键。

class ProductCard extends StatelessWidget {
  final Product product;

  const ProductCard(this.product);

  @override
  Widget build(BuildContext context) {
    return Dismissible(
      key: Key(product.id.toString()),

      onDismissed: (direction) {
        StoreProvider.of<AppState>(context).dispatch(DismissAction(product));

        // Then show a snackbar to allow undo
        Scaffold.of(context).showSnackBar(
            SnackBar(
                content: Row(
                  children: <Widget>[
                    Expanded(child: Text("Dismissed ${product.title}"),),
                    FlatButton(
                      onPressed: () {
                        // THIS IS WHERE I GET THE ERROR
                        StoreProvider.of<AppState>(context).dispatch(UndoDismissAction(product));
                      },
                      child: Text("UNDO"),
                    )
                  ],
                )
            )
        );
      },

      child: Card(
        child: ...
      )
    );
  }
}

我不知道如何处理这个问题。我读过关于flutter键的文章,并认为答案可能是开始传递某种全局键,但我不太明白这是如何工作的。我尝试了一下,遇到了另一个问题,'Inherit FromWidgetOfExactType'是在null上调用的。钥匙是解决这个问题的方法吗?如果是,我在哪里创建密钥,我是否将它传递给小部件,我应该使用什么类型的密钥等等,或者有更好的解决方案吗?

多谢!

共有1个答案

方承弼
2023-03-14

将存储区的一个副本提取到一个局部变量中,然后将被下面的所有lambdas捕获。

  @override
  Widget build(BuildContext context) {
    var store = StoreProvider.of<AppState>(context);
    return Dismissible(
    ...
         store.dispatch(DismissAction(product));
 类似资料:
  • 在Flutter提供的大多数可忽略的示例中,它们都忽略了ListView中的项。例如,这个。 我目前正在做的是:

  • 上架苹果应用市场,驳回原因一直是4.3(a),也修改了方法名、类名、文件名及ui等。依旧不行。还有什么其他方法吗?求大佬支招 uniapp开发

  • 我有一个云函数,其中包括以下三行: 我广泛地使用这三条线,在函数中与火还原进行交互。他们甚至将文档引用保存在文件恢复中。但是,我无法让他们返回对Flutter前端的文档引用。 变量(我们称之为)以一行的形式保存到firestore,显示为,并在下一行返回到颤振前端,如下所示: 然而前端并没有得到文档引用的实例,而是一个带有文档引用相关键的映射!也就是说,

  • 我的spring mvc应用程序是使用glassfish服务器在根url“/”上构建和部署的。 http://mydomain/ 现在我想使用其他上下文路径部署一个新版本,如“v2/” null http://mydomain/v2/home而不是http://mydomain/home

  • 我正试图了解ES6中类的语法。同时通过Bonnie Eisenman的学习反应母语学习织物母语。 我遇到了一个问题,在回调中访问,当回调是一个Class方法时。我知道回调中的词汇问题已经在StackOverflow上多次提出。例如,如何访问回调中正确的this上下文?。 根据我在网上的研究,我找到了一个解决方案。但我不确定在ES6中这样做是否正确。 当我尝试以下操作时,出现了我的问题: (我只是从

  • 问题内容: 是否有人在React 16.8中为useState挂钩的更新部分创建了同步回调?我一直在寻找一种方法,这样我就可以使用第三方库来处理同步操作,而我似乎无法根据自己的需要来完成一项工作。 如果有人对成功完成此操作的人员有任何引用,请在此处添加。 干杯, 问题答案: 使用钩子,您不再需要该函数的回调。现在,您可以使用挂钩设置状态,并监听其值以使用挂钩更新。挂钩的可选第二个参数采用一组值来侦