2015-05-26 88 views
1

是否可以創建一個返回自定義流並像這樣處理它的函數?使函數返回自定義流

user.logIn('owner', '1234') 
.listen(
    success (Object user) { 
    print(user); 
    }, 
    error: (Object user, Object error) { 
    print(error); 
    } 
); 
+0

。這不是一次性事件嗎? –

+1

是的,傳遞一個回調參數會更好嗎? –

+0

如果是一次性操作,只需返回一個'Future '並像'user.login('owner','1234')那樣使用它即可(then((loginResult){...}' –

回答

2

喜歡的東西:

class LoginResult { 
    bool success = false; 
    String username; 
} 

Stream<LoginResult> onLogin() async* { 
    while(...) { 
    yield new LoginResult() 
     ..success = isSuccess 
     ..userName = 'someUser'; 
    } 
} 

StreamController<LoginResult> onLoginController = new StreamController<LoginResult>(); 
// might not be necessary if you only need one listener at most 
Stream<LoginResult> _onLogin = onLoginController.stream.asBroadcastStream(); 
Stream<LoginResult> get onLogin => _onLogin 
... 
onLoginController.add(new LoginResult() 
    ..success = isSuccess 
    ..userName = 'someUser'); 

那麼爲什麼你需要/想爲這個流,你可以使用它像