【问题标题】:Can't access to a private method in Dart Library无法访问 Dart 库中的私有方法
【发布时间】:2021-03-28 11:55:30
【问题描述】:

我必须访问类中的私有方法。我在类内部创建了一个库,导入了它,但它仍然无法识别。我对私有变量也有同样的问题。

例子:

文件buffer.dart

    library buflib;

    class Buffer{

            void _record(){
                    [...]
            }

    }

在同一文件夹中:engine.dart

    import 'buffer.dart';

    class Engine {

            Buffer _buff = Buffer()

            [...]
            void myMethod(){
                    [...]
                    this._buff._record();
            }
    }

我有这个错误:

没有为“缓冲区”类型定义方法“_record”。 尝试将名称更正为现有方法的名称,或定义>一个名为 '_record'.dartundefined_method 的方法

有什么建议吗? 谢谢

【问题讨论】:

    标签: dart syntax-error private


    【解决方案1】:

    默认情况下,每个单独的.dart 文件都是一个单独的库。由于私有标识符对库来说是私有的,因此它们对其他 .dart 文件不可见。

    您可以使用librarypart of 指令将多个.dart 文件分组到同一个库中,但those directives aren't documented

    【讨论】:

    • 哦...现在我明白他们的意思了。谢谢!!
    【解决方案2】:

    你不能从外面的类中调用私有方法或变量......你应该通过删除“under score”将其更改为公共

    【讨论】:

    • 来自 dart documentation 我发现:“导入和库指令可以帮助您创建模块化和可共享的代码库。库不仅提供 API,而且是隐私单元:以下划线开头的标识符仅在库中可见。每个 Dart 应用程序都是一个库,即使它不使用库指令。"。我可能在图书馆里,所以我应该看到他们
    猜你喜欢
    • 2015-09-13
    • 2022-07-21
    • 2021-07-14
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 2021-11-13
    • 2021-05-01
    • 2018-09-23
    相关资源
    最近更新 更多