flutter中使用StreamController实现局部刷新

直接上代码

StreamController<String> _streamController = StreamController();//创建流Stream 控制器

@override //重写方法,销毁流式通道
  void dispose() {
    //销毁
    _streamController.close();
    super.dispose();
  }
//接收消息
StreamBuilder<String>(//初始值
initialData: _background,
//绑定Stream
stream: _streamController.stream,

//发送消息
_streamController.add(_background);
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutterapp/constant/image_path.dart';

class RoomPage extends StatefulWidget {
  @override
  RoomPageState createState() => RoomPageState();
}

class RoomPageState extends State<RoomPage> {
  var _background = ImagePath.background3;

  //流Stream 控制器
  StreamController<String> _streamController = StreamController();
  @override
  void dispose() {
    //销毁
    _streamController.close();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    var _background = ImagePath.background3;
    return Scaffold(
        body: Container(
            width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.height,

            //接收消息
            child: StreamBuilder<String>(
              //初始值
              initialData: _background,
              //绑定Stream
              stream: _streamController.stream,

              builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
                return Container(
                    width: MediaQuery.of(context).size.width,
                    height: MediaQuery.of(context).size.height,
                    decoration: BoxDecoration(
                      image: DecorationImage(
                          image: AssetImage(_background),
                          fit: BoxFit.fill //图像完全填充父容器
                          ),
                    ),
                    child: FlatButton(
                      onPressed: () {
                          _background = ImagePath.background5;
                          print('运行');
                          //发送消息
                          _streamController.add(_background);
                      },
                      child: Text('text'),
                    ));
              },
            )
        )
    );
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值