温馨提示:本文翻译自stackoverflow.com,查看原文请点击:flutter - Dart extension function visible only if is in the same file where it is called

flutter - Dart扩展功能仅在与调用它的文件相同时可见

发布于 2020-03-31 23:14:35

假设我创建了两个文件。首先,我创建一个扩展函数,并从另一个文件的类中调用它。

文件date_extensions.dart

import 'package:date_format/date_format.dart';

extension on DateTime {
  String getSQLFriendly() => formatDate(this, ["yyyy", "-", "MM", "-", "dd", " ", "HH", ":", "mm", ":", "ss"]);
}

并文件some_date_class.dart

import 'date_extensions.dart';

class SomeClassWithDate{

  DateTime dateTime;

  SomeClassWithDate(this.dateTime);

  toString() => dateTime.getSQLFriendly();

}

现在,我得到一个错误:

lib/test/some_date_class.dart:9:26: Error: The method 'getSQLFriendly' isn't defined for the class 'DateTime'.
 - 'DateTime' is from 'dart:core'.
Try correcting the name to the name of an existing method, or defining a method named 'getSQLFriendly'.
  toString() => dateTime.getSQLFriendly();

现在,当我将扩展功能放在调用它的同一个文件中时,一切正常。

这是错误,功能还是我做错了什么?我希望后者是答案。:)

查看更多

提问者
Draško
被浏览
64
Miguel Ruivo 2020-01-31 19:57

匿名Dart扩展名(不带名称的扩展名)仅对它们所在的文件可见。

如果要在其他文件上使用它,请给它起一个名字。

import 'package:date_format/date_format.dart';

extension MyExtension on DateTime {}

这可能应该添加到Dart扩展文档中