onTap 替换来自另一个文件的小部件

onTap replace widget from another file flutter

假设我的 App() 包含一些小部件,为了使代码看起来更漂亮,我为子小部件创建了 类。现在这些子小部件包含 onTap 函数,这些函数应该替换 App() 上的小部件,那么我该如何解决此类问题?

您正在做的事情的一些代码可能会有用,或者您正在尝试 "replace a widget"。

如果替换是指在另一个小部件的位置显示不同的小部件,那么您只需使用布尔值来决定显示哪个小部件。这些是我要执行的步骤。

  1. 使您的 App() 中的小部件有状态,并创建一个名为 showingOriginalWidget = true 的成员变量布尔值;
  2. 在您的子部件中 类 在名为 onSwapWidget 的参数中接收一个函数。
  3. 在子控件的 onTap 函数中调用 onSwapWidget()
  4. 在您的 App() 中,为执行此操作的小部件提供您的函数以回调

见下文

childWidget(onSwapWidget: (){
  setState((){
     // toggle the original widget state
     showingOriginalWidget = !showOriginalWidget;
  });
});
  1. 在显示小部件的位置添加一个条件,以便根据值显示其中一个。

例子

...
child: showingOriginalWidget ? originalWidget() : swappedOutWidget()
...

这应该可以解决问题。