zoukankan      html  css  js  c++  java
  • Flutter响应式编程

    import 'package:flutter/material.dart';
    import 'package:rxdart/rxdart.dart';
    import 'dart:async';
    
    class RxDartDemo extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('RxDartDemo'),
            elevation: 0.0,
          ),
          body: RxDartDemoHome(),
        );
      }
    }
    
    class RxDartDemoHome extends StatefulWidget {
      @override
      _RxDartDemoHomeState createState() => _RxDartDemoHomeState();
    }
    
    class _RxDartDemoHomeState extends State<RxDartDemoHome> {
      PublishSubject<String> _textFieldSubject;
    
      @override
      void initState() {
        super.initState();
    
        _textFieldSubject = PublishSubject<String>();
    
        _textFieldSubject
          // .map((item) => 'item: $item')
          // .where((item) => item.length > 9)
          .debounce(Duration(milliseconds: 500))
          .listen((data) => print(data));
    
        // Observable<String> _observable =
        //     // Observable(Stream.fromIterable(['hello', '您好']));
        //     // Observable.fromFuture(Future.value('hello ~'));
        //     // Observable.fromIterable(['hello', '您好']);
        //     // Observable.just('hello ~');
        //     Observable.periodic(Duration(seconds: 3), (x) => x.toString());
    
        // _observable.listen(print);
    
        // PublishSubject<String> _subject = PublishSubject<String>();
        // BehaviorSubject<String> _subject = BehaviorSubject<String>();
        // ReplaySubject<String> _subject = ReplaySubject<String>(maxSize: 2);
    
        // _subject.add('hello');
        // _subject.add('hola');
        // _subject.add('hi');
        // _subject.listen((data) => print('listen 1: $data'));
        // _subject.listen((data) => print('listen 2: ${data.toUpperCase()}'));
    
        // _subject.close();
      }
    
      @override
      void dispose() {
        super.dispose();
        _textFieldSubject.close();
      }
    
      @override
      Widget build(BuildContext context) {
        return Theme(
          data: Theme.of(context).copyWith(
            primaryColor: Colors.black,
          ),
          child: TextField(
            onChanged: (value) {
              _textFieldSubject.add('input: $value');
            },
            onSubmitted: (value) {
              _textFieldSubject.add('submit: $value');
            },
            decoration: InputDecoration(
              labelText: 'Title',
              filled: true,
            ),
          ),
        );
      }
    }
  • 相关阅读:
    django channle的使用
    显示react配置
    细思极恐-你真的会写java吗?
    Java String 面试题以及答案
    2017年--10年java大神告诉你开发最常用的百分之二十的技术有哪些?
    2017常见的50道java基础面试题整理(附答案)
    java如何填写简历?(干货篇)
    你所不知道的 Java 之 HashCode
    Java一般要学多久?
    Java 线程的中断机制
  • 原文地址:https://www.cnblogs.com/loaderman/p/11345862.html
Copyright © 2011-2022 走看看