这里写自定义目录标题
局部刷新 StreamBuilder
日常使用最多的局部刷新为Provider状态管理 Selector,今天分享flutter框架自带的StreamBuilder组件,该组件可做到局部刷新,使用简单且轻便。
代码使用案例
import 'dart:async';
import 'package:flutter/material.dart';
class StreamBuilderDemo extends StatefulWidget {
@override
_StreamBuildStateDemo createState() => new _StreamBuildStateDemo();
}
class _StreamBuildStateDemo extends State<StreamBuilderDemo> {
int _key1 = 0;
int _key2=0;
StreamController<int> _streamController1;
StreamController<int> _streamController2;
@override
void initState() {
_streamController1 = StreamController<int>();
_streamController2 = StreamController<int>();
// TODO: implement initState
super.initState();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('状态管理'),
),
body: new Center(
child:Column(children: [
Container(child:StreamBuilder<int>(initialData:0,stream:_streamController1.stream,builder:(context,AsyncSnapshot<int> snapshot){
return Text("${snapshot.data}");
},),),
Container(child:StreamBuilder<int>(initialData:0,stream:_streamController2.stream,builder:(context,AsyncSnapshot<int> snapshot){
return Text("${snapshot.data}");
},),),
Container(height: 50,),
InkWell(child:Text("key1测试"),onTap:(){
_streamController1.add(_key1++);
},),
Container(height: 50,),
InkWell(child:Text("key2测试"),onTap:(){
_streamController2.add(_key2++);
},),
],),
),
);
}
}