eaglesakuraの技術ブログ

技術的な話題とか、メモとか。

dartでKotlin.internal funっぽいことをする

dartのinternal fun

dart 2.15には)ない(たぶん)。

特定packageだけでアクセスしたいメソッドとか作れない。

作ったらみんなアクセスされてしまう。

解決方法

// src/example.dart
class Example {
  String _value = '';

  String get value => _value;
}

extension ExampleSetValue on Example {
  void setValue(String s) {
    _value = s;
  }
}
library example;

// exportするときに、Extensionを隠してやる
export 'src/example.dart' hide ExampleSetValue;

これで行儀良く使っている限りは外部のpackageはExample.setValue()をコールできない。

package内は 'src/example.dart' を直接importする。

無理矢理importすれば使えなくもないので、lintと併用で。