【问题标题】:How to reuse the contents of the same widget in flutter?如何在颤振中重用同一个小部件的内容?
【发布时间】:2019-05-21 07:58:27
【问题描述】:

我想在多个地方使用同一个小部件实例,一个地方的更改将同步到另一个地方。

但是在多个地方使用同一个实例看起来就像多个不同的实例。

那么我怎样才能实现这一壮举呢?

  var test = InAppWebView(
    // ...
  );

  Widget build(BuildContext context) {
    return Scaffold(
      body: PageView(
        children: [
          test,  // widget one
          test,  // widget two
        ],
        controller: _pageController,
        physics: NeverScrollableScrollPhysics(),
        onPageChanged: onPageChanged,
      ),
     ),
    }

我正在使用flutter_inappbrowser。

小部件一和小部件二使用相同的实例,但是当我使用小部件一打开网页时,小部件二不受影响。

我希望小部件一和小部件二是同一个小部件,当小部件一改变时,小部件二也会受到影响。

【问题讨论】:

  • 这可以通过 StatefulWidget 或某种控制器来实现。也许你应该问问插件的维护者看看它是否有这个功能。
  • 你为什么不使用 webview_flutter 官方插件,它有控制器,你可以轻松使用。我在应用浏览器中使用过,但在构建 IOS 时遇到了问题。如果您想尝试创建一个方法并传递相关参数,并且可能是如果在应用程序浏览器中有 key 属性,您可以尝试使用相同的键(我不确定是否使用相同的键)

标签: dart flutter


【解决方案1】:

创建另一个类并返回类型,如您所需的小部件:

与我在各种类中所需的 customButton 相关的示例:

 Widget customButton(title,context,ResponseCallback callBack,shadowColor) {
  return Container(
    margin: EdgeInsets.only(top: 20),
    height: 80,
    width: 150,
    decoration: BoxDecoration(
      color: Colors.blue,
      borderRadius: BorderRadius.circular(75),
      boxShadow: [
        BoxShadow(
          spreadRadius: 1,
          blurRadius: 4,
          offset: Offset(4, 3),
          color: shadowColor
        )
      ]
    ),
    child: FlatButton(
      onPressed: () {
        callBack(title);
      },
      child: Text(title,
          style: TextStyle(
              color: Colors.white,
              fontSize: 20,
              fontWeight: FontWeight.bold)),
    ),
  );
}

使用:

child: customButton(
   comparedArray[index].category, context, buttonCallHandle,Colors.black),),



buttonCallHandle(e) {
dynamic instanceUpdated = instance.where((element) => element.category == e).toList();
Navigator.of(context).pushNamed('/choice', arguments: instanceUpdated);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 2020-09-07
    • 2020-10-29
    • 1970-01-01
    • 2023-03-15
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多