Dart 如何制作 MyClass.of(context) 方法

Dol*_*rma 3 dart flutter

假设我有这门课:

class AppTheme {
  final BuildContext context;

  AppTheme(this.context);

  TextStyle caption() {
    return Theme.of(context).textTheme.caption.copyWith(
      color: Colors.black
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

如何以可以使用以下方式访问的方式修改它caption

AppTheme.of(context).caption();
Run Code Online (Sandbox Code Playgroud)

Cop*_*oad 5

我不确定为什么你需要这样,当你已经可以轻松使用它时

AppTheme(context).caption();
Run Code Online (Sandbox Code Playgroud)

但如果你真的需要它,你可以尝试这个:

class AppTheme {
  final BuildContext context;

  AppTheme._(this.context); // make this constructor private

  static AppTheme of(BuildContext context) => AppTheme._(context); // pass context to above constructor

  TextStyle caption() {
    return Theme.of(context).textTheme.caption.copyWith(color: Colors.black);
  }
}
Run Code Online (Sandbox Code Playgroud)

你可以使用它

AppTheme.of(context).caption();
Run Code Online (Sandbox Code Playgroud)