首页 > 解决方案 > 为什么要指明 Option 参数?

问题描述

我想创建一个 Setter() 并找到将 Option 参数用于 newValue 的代码。是否应该将其解释为类似于括号中的 [可选参数]?也可以完全排除在外吗?

class SomeState with ChangeNotifier {
    int _progress = 0;
    Option _selected;

    final PageController controller = PageController();

    get progress => _progress;
    get selected => _selected;

    set progress(double newValue) {
        _progress = newValue;
        notifyListeners();
  }

  set selected(Option newValue) { //here
      _selected = newValue;
      notifyListeners();
  }

}

标签: flutterdart

解决方案


不确定我是否清楚地理解了你的问题。

1.必填参数

// here you need to provide Option
set selected(Option newValue) { 
  _selected = newValue;
  notifyListeners();
}

你会像这样使用它

selected(value);

2.位置参数

// here Option is optional
set selected([Option newValue]) { 
  _selected = newValue;
  notifyListeners();
}

你会像这样使用它

selected(value); // if you need to provide value
selected(); // if you don't want to provide any value

3.命名参数

// here Option is optional 
set selected({Option newValue}) { 
  _selected = newValue;
  notifyListeners();
}

你会像这样使用它

selected(value: value); // if you want to provide value
selected(); // if you don't to provide value 

笔记:

如果@required在变量前面使用,位置和命名参数也可以是必需的。

如果你想给可选参数任何默认值,你可以在参数中使用以下

set selected({Option newValue = const SomeValue()}) {...}

推荐阅读