Flutter 颤振提供商正在重新喷漆,但未清除最新的油漆
我正试着和你一起飞翔。我的目标很简单:我想使用Flutter 颤振提供商正在重新喷漆,但未清除最新的油漆,flutter,dart,flutter-provider,Flutter,Dart,Flutter Provider,我正试着和你一起飞翔。我的目标很简单:我想使用StreamProvider每秒发出一个新的整数并打印这个整数。我对以任何其他方式实现这个目标都不感兴趣,因为我想专门学习如何使用StreamProvider 问题在于,即使每秒打印一个新值,但之前的状态不会被清除,因此这些数字本身是重叠的 我怎样才能解决这个问题 源代码和屏幕截图: import 'package:provider/provider.dart'; import 'package:spellcharger/theme/dark.dar
StreamProvider
每秒发出一个新的整数并打印这个整数。我对以任何其他方式实现这个目标都不感兴趣,因为我想专门学习如何使用StreamProvider
问题在于,即使每秒打印一个新值,但之前的状态不会被清除,因此这些数字本身是重叠的
我怎样才能解决这个问题
源代码和屏幕截图:
import 'package:provider/provider.dart';
import 'package:spellcharger/theme/dark.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
Stream<int> timedCounter(Duration interval, [int maxCount]) async* {
int i = 0;
while (true) {
await Future.delayed(interval);
yield i++;
if (i == maxCount) break;
}
}
@override
Widget build(BuildContext context) {
return StreamProvider.value(
value: timedCounter(new Duration(seconds: 1), 2000),
initialData: 0,
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: darkTheme,
home: CounterWrapper() // LoginScreen(title: 'SpellCharger'),
),
);
}
}
class CounterWrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Consumer<int>(
builder: (_, a, child) {
// THIS IS REPAINTING BUT NOT CLEARING THE PREVIOUS PAINT
return Text(a.toString());
}
);
}
}
导入“包:provider/provider.dart”;
导入“package:spellcharger/theme/dark.dart”;
进口“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
流时间计数器(持续时间间隔,[int maxCount])异步*{
int i=0;
while(true){
等待未来。延迟(间隔);
产量i++;
如果(i==最大计数)中断;
}
}
@凌驾
小部件构建(构建上下文){
返回StreamProvider.value(
值:timedCounter(新的持续时间(秒数:1),2000),
初始数据:0,
孩子:MaterialApp(
debugShowCheckedModeBanner:false,
标题:“颤振演示”,
主题:黑暗主题,
home:CounterWrapper()//登录屏幕(标题:“SpellCharger”),
),
);
}
}
类计数器包装器扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
退货消费者(
建筑商:(uu,a,child){
//这是重新喷漆,但不是清除以前的油漆
返回文本(a.toString());
}
);
}
}
我使用的是提供商版本4.0.5,它运行良好 注意:我删除了主题拼写充电器,因为我没有它
正如您所解释和期望的那样,它对我来说完全正常。@VirenVVarasadiya感谢您花时间测试它。问题是,根据我的Android仿真器的大小,它不能正确刷新。这个问题与供应商有关=(.再次感谢您非常感谢您花时间测试我的代码。这很有帮助。我发现问题在于我的模拟器没有根据大小刷新内容。如果我将模拟器缩小,它会更新得很好,屏幕会变黑,就像您的示例中一样。谢谢您againI刚刚意识到拥有一个脚手架屏幕上的ld组件修复了喷漆问题