简体   繁体   English

如何在flutter中重用同一小部件​​的内容?

[英]How to reuse the contents of the same widget in flutter?

I want to use the same instance of a widget in multiple places, changes in one place will be synchronized to another place.我想在多个地方使用同一个小部件实例,一个地方的变化会同步到另一个地方。

But using the same instance in multiple places looks like multiple different instances.但是在多个地方使用同一个实例看起来就像多个不同的实例。

So how can I achieve the feat?那么我怎样才能实现这一壮举呢?

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

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

I'm use flutter_inappbrowser .我正在使用flutter_inappbrowser

Widget one and widget two use the same instance, but when I open the web page with widget one, widget two is unaffected.小部件一和小部件二使用相同的实例,但是当我用小部件一打开网页时,小部件二不受影响。

I want widget one and widget two to be the same widget, that when widget one changes, widget two will also be affected.我希望小部件一和小部件二是同一个小部件,当小部件一改变时,小部件二也会受到影响。

create another class and return type like your required widget:创建另一个类并返回类型,如您所需的小部件:

example related to my customButton i required in various classes:与我在各种类中需要的 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)),
    ),
  );
}

used:用过的:

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);

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM