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,
            ),
          ),
        );
      }
    }
  • 相关阅读:
    案例(用封装的ajax加载数据库的数据到页面)
    案例(用封装的ajax函数检查用户名)
    Verilog中的UDP
    FPGA中的“门”
    反馈的基础概述
    集成运放四种组态
    阻抗匹配处理方式
    关于阻抗匹配的理解
    关于输入阻抗和输出阻抗的理解
    电压跟随器的一点理解
  • 原文地址:https://www.cnblogs.com/loaderman/p/11345862.html
Copyright © 2011-2022 走看看