flutter - 为什么要指明 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();
}
}
解决方案
不确定我是否清楚地理解了你的问题。
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()}) {...}
推荐阅读
- c# - 使用 jquery 或 javascript 在 GridView 的 TemplateField 中查找控件
- .net - 如何通过 Powershell 更新 AppDynamics .net 代理?
- android - 如何解析和显示响应 Okhttp 的代码?
- dart - Flutter - 有没有办法只使用 IconButton(不创建应用栏)来打开抽屉?
- unity3d - 使用 Unity Physics 将球持续反弹到相同的高度
- python - 如何将用户定义的行函数应用于加载的数组的所有行?
- amazon-web-services - 使用 CNAME 的外部站点,用于托管在 AWS 上的站点
- android - 当我使用 LinearLayout 而不是 CardView 作为父 XML 布局时,RecyclerView 仅显示 1 个项目
- xml - .gitignore 中的 .idea/compiler.xml?
- asp.net - 如何访问 Page.FormViewDetails.DataKey?