小编Luc*_*mic的帖子

StreamBuilder在处置并再次构建后停止重绘

项目结构

\n

我有下一个小部件,它使用 StreamBuilder 来监听绘制列表。\n(我省略了不相关的细节)

\n
class CloseUsersFromStream extends StatelessWidget {\n  final Stream<List<User>> _stream;\n  const CloseUsersFromStream(this._stream);\n\n  @override\n  Widget build(BuildContext context) {\n    return StreamBuilder<List<User>>(\n      stream: _stream,\n      builder: _buildWidgetFromSnapshot,\n    );\n  }\n\n  Widget _buildWidgetFromSnapshot(_, AsyncSnapshot<List<User>> snapshot) {\n    if (_snapshotHasLoaded(snapshot)) {\n      return UsersButtonsList(snapshot.data!);\n    } else {\n      return const Center(child: CircularProgressIndicator());\n    }\n  }\n\n  bool _snapshotHasLoaded(AsyncSnapshot<List<User>> snapshot) {\n    return snapshot.hasData;\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

及其父级:

\n
class CloseUsersScreen extends StatefulWidget {\n  final ICloseUsersService _closeUsersService;\n\n  const CloseUsersScreen(this._closeUsersService);\n\n  @override\n  State<CloseUsersScreen> createState() => _CloseUsersScreenState();\n}\n\nclass _CloseUsersScreenState extends State<CloseUsersScreen> {\n  late final Stream<List<User>> …
Run Code Online (Sandbox Code Playgroud)

dart flutter

6
推荐指数
1
解决办法
372
查看次数

Timer.periodic 无法与提供者一起正常工作

我试图在一个类中使用periodic该类的方法Timer,该类扩展了该类ChangeNotifier(包Provider),使我的变量time每秒都在减少。

如果我不添加NotifyListeners重绘占用该time属性的所有小部件的方法,则此方法可以正常工作,例如:

class PriceProvider extends ChangeNotifier{
  int _time = 60;

  int get time{
    return _time;
  }

  void chronometer(){//method which activate the timer

    Timer _timer = Timer.periodic(const Duration(seconds: 1), (Timer timer){
      print(DateTime.now());//I print the date so you can see how often the code is executed
      
      _time += -1;//decrease time

      if(_time == 0){
        _time = 60;
      } 

      // notifyListeners(); 
    });
  } 

}
Run Code Online (Sandbox Code Playgroud)

控制台输出(每秒正确运行): 萨利达·波尔·康索拉

另一方面,如果我取消对该NotifyListeners方法的注释,代码开始以指数方式每秒执行越来越多的次数(例如,首先执行一次,然后两次,然后 5 次,然后 …

dart flutter flutter-provider

0
推荐指数
1
解决办法
2862
查看次数

标签 统计

dart ×2

flutter ×2

flutter-provider ×1