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组件修复了喷漆问题