フラッター反応プログラミング - RxDart

 

 

インポート 'パッケージ:フラッター/ material.dart' ;
インポート 'パッケージ:rxdart / rxdart.dart' ;
インポート「ダーツ:非同期」; 

クラス RxDartDemoは延びStatelessWidget { 
  @Override 
  ウィジェットビルド(BuildContextコンテキスト){ 
    戻り足場を(
      アプリケーションバー:アプリケーションバー(
        タイトル:テキスト( 'RxDartDemo' )、
        標高: 0.0 
      )、
      本体:RxDartDemoHome() 
    )。
  } 
} 

クラス RxDartDemoHomeは延びStatefulWidgetを{ 
  @Overrideを
  _RxDartDemoHomeState createState() => _RxDartDemoHomeState(); 
} 

クラス _RxDartDemoHomeStateが延びている状態<RxDartDemoHome> { 
  PublishSubjectの<string> _textFieldSubjectは、

  @Override 
  ボイドinitState(){
     スーパー.initState()。

    _textFieldSubject = PublishSubjectの<string> (); 

    _textFieldSubject 
      // .MAP((アイテム)=> 'アイテム:$アイテム')
       // .where((アイテム)=> item.length> 9) 
      .debounce(所要時間(ミリ秒:500 ))
      .listen((データ) => 印刷(データ))。

    //観察<ストリング> _observable =
     //      // 観察(Stream.fromIterable([ 'ハロー'、 '您好']));
    //      // Observable.fromFuture(Future.value( 'こんにちは〜'));
    //      // Observable.fromIterable([ 'ハロー'、 '您好'])。
    //      // Observable.just( 'こんにちは〜');
    //      Observable.periodic(時間(秒:3)、(X)=> x.toString()); 

    // _observable.listen(印刷)。

    // PublishSubjectの<string> _subject = PublishSubjectの<string>();
    // BehaviorSubjectの<string> _subject = BehaviorSubjectの<string>();
    // ReplaySubject <文字列>

    // _subject.add( 'こんにちは');
    // _subject.add( 'はいはい');
    // _subject.add( 'こんにちは');
    // _subject.listen((データ)=>印刷( '1を聞く:$データ'));
    // _subject.listen((データ)=>プリント(2 'を聴く:$ {data.toUpperCase()}')); 

    // _subject.close(); 
  } 

  @Override 
  ボイド廃棄を(){
     スーパー.dispose()。
    _textFieldSubject.close()。
  } 

  @Override 
  ウィジェット(BuildContextコンテキスト)を構築{ 
    戻りテーマ(
      データ:Theme.of(コンテキスト).copyWith(
        のprimaryColor:Colors.black、 
      、)
      子:テキストフィールド(
        onChangedイベント:(値){ 
          _textFieldSubject.add( '入力:$値' )。
        }、
        onSubmitted:(値){ 
          _textFieldSubject.add( '提出:$値を' ); 
        }、
        装飾:InputDecoration(
          labelText: 'タイトル' 
          充填:
        )、 
      )、
    )。 
  } 
}

 

おすすめ

転載: www.cnblogs.com/loaderman/p/11345862.html