Flutter错误“多个小部件使用了相同的GlobalKey”-将ScreenShot与SocialShare插件一起使用

时间:2020-10-29 13:08:09

标签: flutter dart screenshot socialshare

我不确定在哪里可以找到与我的应用程序中的另一个小部件共享同一全局密钥的额外小部件。我正在使用Screenshot and Social Share插件。

https://pub.dev/packages/screenshot

https://pub.dev/packages/social_share

与社交媒体(例如Facebook Messenger)共享时,我想上传屏幕截图。但是我在控制台中遇到了以下错误,该错误仅在添加了屏幕截图控制器之后发生;

std::list

我在哪里遇到这个问题?我在状态内创建了屏幕截图实例;

Flutter Multiple widgets used the same GlobalKey

这是版本;

class _StageBuilderState extends State<StageBuilder> {
    ScreenshotController screenshotController = ScreenshotController();

那么这个额外的小部件与我的应用程序中的其他共享相同的全局密钥的地方在哪里?我应该在哪里开始故障排除?

1 个答案:

答案 0 :(得分:0)

原来,我不得不将Screenshot控制器设为本地并将其放在此处;

    SingleChildScrollView(//physics: NeverScrollableScrollPhysics(),
          child: Column(
            children: <Widget>[
              RepaintBoundary(
                key: _signKey,
                child: new Container(
                  child: GestureDetector(
                    onPanUpdate: (DragUpdateDetails details) {
                      setState(() {
                        RenderBox object = context.findRenderObject();
                        Offset _localPosition =
                        object.globalToLocal(details.globalPosition);
                        points = new List.from(points)
                          ..add(_localPosition);
                      });
                    },
                    onPanEnd: (DragEndDetails details) => points.add(null),
                    child: new CustomPaint(
                      painter: new DrawPainter(points: points),
                      size: Size.infinite,
                    ),
                  ),

                ),
              ),
              Row(
                children: <Widget>[
                  FlatButton(
                    padding: EdgeInsets.fromLTRB(20, 10, 20, 10),
                    shape: RoundedRectangleBorder(
                        borderRadius: BorderRadius.circular(8)),
                    color: Colors.redAccent,
                    textColor: Colors.black,
                    onPressed: (){
                      setState(() {
                        points.clear();
                      });
                    },
                    child: Text('Sil'),
                  ),
                ],
              ),
            ],
          ),
        );