我做了使用Streams的小型无状态小部件。我已经阅读到我始终应关闭Streams以防止内存泄漏。但是无状态窗口小部件没有dispose()
方法。
那我该怎么办?不在无状态中使用流吗?还是可以吗?
这是我的代码:
class HomePage extends StatelessWidget {
Bloc _bloc = Bloc();
@override
Widget build(BuildContext context)
{
return Scaffold(
appBar: AppBar(),
body: Container(
child:
StreamBuilder(
stream: _bloc.counter,
initialData: 0,
builder: (BuildContext context, AsyncSnapshot<int> _snapshot)
{
return Column(
children: <Widget>[
Text("Pressed: ${_snapshot.data}"),
RaisedButton(child: Text("inc"), onPressed: () => { _bloc.eventSink.add(IncrementEvent()) },),
RaisedButton(child: Text("dec"), onPressed: () => { _bloc.eventSink.add(DecrementEvent()) },)
],
);
}
)
),
);
}
}
我的代码基于here中的示例。
如果出现内存泄漏,请说明情况如何?每次点击都会创建新对象?还是什么?
答案 0 :(得分:0)
在这种情况下,您不能使用StatelessWidget
,否则会出现内存泄漏并可能会丢失状态。
将小部件转换为StatefulWidget
,并正确放置对象。