【问题标题】:How to set the parameter for image data type for an image in flutter如何为flutter中的图像设置图像数据类型的参数
【发布时间】:2018-08-03 11:40:23
【问题描述】:

大家好,因为我是 Flutter 的新手,在设置图像数据类型时遇到问题。 我有两个盒子,我需要将一个盒子拖到另一个盒子上(自动适应)。但是我在声明图像参数时遇到了错误。我可以拖动带有图像的项目框,但拖动的项目不被现有的 dragTarget 对象接受。 提前致谢。

这是我的代码和截图:

import 'package:flutter/material.dart';
class Episode3 extends StatelessWidget {
  var accpeptedData = Image.asset("");
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: <Widget>[
          DraggableWidget(
            offset: Offset(50.0, 80.0),
          ),
          Positioned(
            top: 100.0,
            left: 100.0,
            child: DragTarget(
              builder: (BuildContext context, List<dynamic> accepted,
                      List<dynamic> rejected) =>
                  Container(
                    height: 200.0,
                    width: 200.0,
                    decoration: BoxDecoration(color: Colors.cyan),
                    child: Center(
                      child: Image.file(accpeptedData.toString()),
                    ),
                  ),
              onAccept: (Image data) {
                accpeptedData = data;
              },
            ),
          )
        ],
      ),
    );
  }
}

class DraggableWidget extends StatefulWidget {
  final Offset offset;

  DraggableWidget({Key key, this.offset}) : super(key: key);

  @override
  _DraggableWidgetState createState() => _DraggableWidgetState();
}
class _DraggableWidgetState extends State<DraggableWidget> {
  Offset offset = Offset(0.0, 0.0);
  @override
  void initState() {
    super.initState();
    offset = widget.offset;
  }
  @override
  Widget build(BuildContext context) {
    return Positioned(
      bottom: offset.dy,
      left: offset.dx,
      child: Draggable(
        data: Image.asset("ss/camera-icon.png"),
        child: Container(
          width: 200.0,
          height: 200.0,
          color: Colors.blue,
          child: Center(
            child: Image.asset("ss/camera-icon.png")
          ),
        ),
        feedback: Container(
          width: 200.0,
          height: 200.0,
          color: Colors.blue.withOpacity(0.3),
          child: Center(
            child: Image.asset("ss/camera-icon.png")
          ),
        ),
        onDraggableCanceled: (v, o) {`enter code here`
          setState(() {
            offset = o;
          });
        },
      ),
    );
  }
}

【问题讨论】:

  • 只是澄清一下,即使屏幕截图中所述的第 25 行有错误,您上面提供的代码也会运行?或者这是一个新的实现并导致您在该行出现错误?你能提供错误信息吗?我还发现this blog 很有帮助。如果这是你需要的。

标签: android ios flutter


【解决方案1】:

Image.file() 需要一个 File 对象。这里出现错误的原因是因为传递的是String而不是File。你可以在这里做的是解析字符串文件路径。

Image.file(File(accpeptedData.toString()))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2019-05-28
    相关资源
    最近更新 更多