gpt4 book ai didi

dart - 相当于 Dash 中的 c# EventHandler?

转载 作者:IT王子 更新时间:2023-10-29 07:08:50 26 4
gpt4 key购买 nike

我已经用 c# 开发应用程序一段时间了,并且有兴趣使用 Flutter SDK 并可能在将来切换到。我开始喜欢在 C# 中使用 EventHandlers 和委托(delegate)来创建和触发自定义事件,并试图在 Dart 中找到等效项。这样的事情可能吗?

谢谢!

最佳答案

import 'dart:async';

void main() {
var myClass = new MyClass();
var subscription = myClass.onMyEvent.listen((e) => print('new event: $e'));
myClass.emit(true);
myClass.emit(false);
subscription.cancel();
myClass.emit(null);

new MyDelegateExample()
..addHandler((val) => print('1: $val'))
..dispatch('a');

new MyDelegateExample2()
..addHandler((val) => print('2: $val'))
..dispatch('b');
}

自定义事件

class MyClass {
final _onMyEvent = new StreamController<bool>.broadcast(sync: true);

Stream<bool> get onMyEvent => _onMyEvent.stream;

void emit(bool val) => _onMyEvent.add(val);
}

具有内联类型的委托(delegate)

class MyDelegateExample {
var _handlers = <void Function(String e)>[];

void addHandler(void Function(String e) handler) => _handlers.add(handler);

void dispatch(String x) => _handlers.forEach((h) => h(x));
}

委托(delegate)typedef

typedef void Handler(String e);

class MyDelegateExample2 {
var _handlers = <Handler>[];

void addHandler(Handler handler) => _handlers.add(handler);

void dispatch(String x) => _handlers.forEach((h) => h(x));
}

关于dart - 相当于 Dash 中的 c# EventHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49035827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com