神秘颤动警告:元素被隐式隐藏了?

时间:2018-08-20 03:55:29

标签: canvas dart flutter

警告:

  

SDK库'ui.dart'中的元素'TextStyle'被隐式隐藏   'text_style.dart'。

代码提取:

 import 'dart:math';
 import 'dart:ui';
 import 'package:flutter/material.dart';

@override
void paint(Canvas canvas, Size size) {
    TextSpan span = new TextSpan(style: new TextStyle(color: Colors.blue[800], fontSize: 12.0,), text: "Title");
    TextPainter tp = new TextPainter(text: span, textAlign: TextAlign.left, textDirection: TextDirection.ltr);
    tp.layout();
    tp.paint(canvas, new Offset(50.0, 300.0));

现在这是一个警告,而不是一个错误,但我不知道此消息的含义。有人知道怎么翻译吗? implicitly hidden警告消息是什么意思?

2 个答案:

答案 0 :(得分:3)

一个(希望)澄清答案,以备将来参考。

为解决导入冲突,您至少有两个选择(在一个以上的导入中,它们的名称相同,并且彼此互为阴影)。

  1. 使用命名的导入前缀<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Emulators moduleId="IdEmu129872q53" moduleName="Emulators"> <VICEModule moduleId="Id1" moduleName="VICE V1"> <InstallationPath>V1 Path</InstallationPath> <Port>6510</Port> </VICEModule> <VICEModule moduleId="Id2" moduleName="VICE V2"> <InstallationPath>V2 Path</InstallationPath> <Port>6511</Port> </VICEModule> </Emulators>
  2. 使用as关键字

示例: 导入dart:ui可能会导致TextStyles冲突(在flutter材质包和dart ui库中都存在hide类)

解决方案:

1。

TextStyle

2。

import 'dart:ui' as ui;
import 'package:flutter/material.dart';
// prefix your use of the ui library with ui (material TextStyle no longer shadowed)
...
ui.TextStyle(... // from dart:ui
ui.ImageFilter(... // from dart:ui
TextStyle(... // from flutter/material

答案 1 :(得分:2)

删除import 'dart:ui';为我工作。

重新发布: 软件包text_style.dart下的文件painting具有一个TextStyle。软件包text.dart下的文件ui也具有一个TextStyle。它们具有相同的名称,因此Dart无法区分,这意味着“阴影”。改用import 'dart:ui' as ui;,告诉Dart您确实要导入哪个TextStyle。在我的情况下,我需要使用包装画下的TextStyle,因此删除import 'dart:ui';对我有用。

如果导入package:flutter/material.dart,则TextStyle指向包painting下的那个。对于您而言,您还导入了软件包ui,因此发生了“名称阴影”。