“int?get priority => 1;”是什么意思?做?

What does " int? get priority => 1;" do?

我正在阅读如下的 flutter 代码:

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:test_get_app/user_controller.dart';

class AuthMiddleware extends GetMiddleware {
  final authService = UserController.findOrInitialize; // Here is error, this line can't find UserController
  @override
  int? get priority => 1;
  bool isAuthenticated = false;

  @override
  RouteSettings? redirect(String? route) {
    isAuthenticated = true;
    if (isAuthenticated == false) {
      return const RouteSettings(name: '/login');
    }
    return null;
  }
}

当我到达下一行时,我无法理解它的语法以及它是如何工作的?

  int? get priority => 1;

这是一个so-calledgetter。吸气剂可用于提供对 class 属性的读取访问。

他们也可以直接 return 值,就像你的情况一样。

它们的访问方式与 class 的属性相同,它们声明于:

final middleWare = AuthMiddleware();
final priority = middleWare.priority;

在你的情况下,getter 可能必须或可以实现(参见 @override 注释),因为我猜中间件的所有实现都必须声明它们的优先级。由于声明的类型是 int? 它也可能 return null 而不是整数。

Getter 可以使用表达式声明。就像你的情况一样。使用块体也可以:

int? get priority {
  return 1;
}
  • int? 表示它是一个 int 但 int 可以为 null

  • => 1 表示 () {return 1;}