Flutter Web - 无法编译,包中的双重导入问题
Flutter Web - Unable to compile, dual import issues in package
我正在尝试在基于浏览器的应用程序中使用此 package。尝试编译为 Chrome 时,我得到:
Compiler message:
/C:/flutter/.pub-cache/hosted/pub.dartlang.org/whiteboardkit-0.1.8/lib/gesture_whiteboard_controller.dart:63:15:
Error: 'Point' is imported from both 'dart:math' and 'dart:ui'.
..add(Point.fromOffset(position));
^^^^^ /C:/flutter/.pub-cache/hosted/pub.dartlang.org/whiteboardkit-0.1.8/lib/gesture_whiteboard_controller.dart:77:39:
Error: 'Point' is imported from both 'dart:math' and 'dart:ui'.
this.draw.lines.last.points.add(Point.fromOffset(secondPoint));
这似乎是包特定的,所以我想我的问题是为什么 'dart:math' 和 'dart:ui' 之间会发生冲突?
关于为什么 ui
和 math
之间会发生冲突的问题无法回答,只能给出一个原因。在数学中肯定有一个概念调用 Point
,因此有 class 定义它。在 dart:ui
中,您正在处理基于 2D 坐标系的屏幕或 canvas 进行绘制,因此 Point
指的是屏幕中的其中一个点。
您可以简单地从这样的导入之一中隐藏其中一个 Point
。
import 'dart:ui' hide Point;
import 'dart:math';
或相反。
import 'dart:ui' ;
import 'dart:math' hide Point;
替代方法是使用别名进行导入,并将别名用作前缀。
import 'dart:ui' as ui;
import 'dart:math';
// and somewhere in the code use it like
add(ui.Point.fromOffset(position));
我正在尝试在基于浏览器的应用程序中使用此 package。尝试编译为 Chrome 时,我得到:
Compiler message: /C:/flutter/.pub-cache/hosted/pub.dartlang.org/whiteboardkit-0.1.8/lib/gesture_whiteboard_controller.dart:63:15: Error: 'Point' is imported from both 'dart:math' and 'dart:ui'. ..add(Point.fromOffset(position)); ^^^^^ /C:/flutter/.pub-cache/hosted/pub.dartlang.org/whiteboardkit-0.1.8/lib/gesture_whiteboard_controller.dart:77:39: Error: 'Point' is imported from both 'dart:math' and 'dart:ui'. this.draw.lines.last.points.add(Point.fromOffset(secondPoint));
这似乎是包特定的,所以我想我的问题是为什么 'dart:math' 和 'dart:ui' 之间会发生冲突?
关于为什么 ui
和 math
之间会发生冲突的问题无法回答,只能给出一个原因。在数学中肯定有一个概念调用 Point
,因此有 class 定义它。在 dart:ui
中,您正在处理基于 2D 坐标系的屏幕或 canvas 进行绘制,因此 Point
指的是屏幕中的其中一个点。
您可以简单地从这样的导入之一中隐藏其中一个 Point
。
import 'dart:ui' hide Point;
import 'dart:math';
或相反。
import 'dart:ui' ;
import 'dart:math' hide Point;
替代方法是使用别名进行导入,并将别名用作前缀。
import 'dart:ui' as ui;
import 'dart:math';
// and somewhere in the code use it like
add(ui.Point.fromOffset(position));