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,
            ),
          ),
        );
      }
    }
  • 相关阅读:
    帝国cms7.0 内容页控制简介字数!
    帝国cms后台 不同栏目发布字段不同
    帝国cms7.0 列表模板调用本栏目缩略图
    戏说三国战纪
    灵动标签调用指定专题
    帝国cms7.0调用出栏目下的东西
    任天堂的游戏之路
    DC游戏《斑鸠》原创赏析[转载]
    一,PHP 语法
    给自己的网站加入“保存到桌面”的按钮
  • 原文地址:https://www.cnblogs.com/loaderman/p/11345862.html
Copyright © 2011-2022 走看看