BLoC构建器不会重新渲染UI
创始人
2024-12-22 20:00:23
0

在使用BLoC构建器时,如果想要避免不必要的UI重新渲染,可以使用StreamBuilder组件来监听BLoC的状态变化,并根据状态更新UI。

以下是一个示例代码:

import 'package:flutter/material.dart';
import 'dart:async';

// 创建一个简单的BLoC类
class CounterBloc {
  StreamController _counterController = StreamController();
  Stream get counterStream => _counterController.stream;
  int _counter = 0;

  void incrementCounter() {
    _counter++;
    _counterController.sink.add(_counter);
  }

  void dispose() {
    _counterController.close();
  }
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'BLoC Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State {
  // 创建一个BLoC实例
  final CounterBloc _counterBloc = CounterBloc();

  @override
  void dispose() {
    // 在页面销毁时清理BLoC
    _counterBloc.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BLoC Demo'),
      ),
      body: Center(
        child: StreamBuilder(
          stream: _counterBloc.counterStream,
          initialData: 0,
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            return Text(
              'Counter: ${snapshot.data}',
              style: TextStyle(fontSize: 24),
            );
          },
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          _counterBloc.incrementCounter();
        },
        child: Icon(Icons.add),
      ),
    );
  }
}

在上述代码中,首先定义了一个简单的CounterBloc类,该类有一个计数器变量和一个用于监听计数器变化的counterStream。在incrementCounter方法中,通过sink.add将计数器的最新值发送到counterStream中。

_MyHomePageStatebuild方法中,使用StreamBuilder来监听_counterBloc.counterStream的状态变化。StreamBuilder会自动根据新的状态值重新构建UI,从而避免不必要的UI重新渲染。

通过这种方式,可以实现BLoC构建器不会重新渲染UI的效果。

相关内容

热门资讯

透视安卓版!wpk辅助,永胜联... 透视安卓版!wpk辅助,永胜联盟会封号吗(好像真的是有挂)1、永胜联盟会封号吗系统规律教程、永胜联盟...
透视好牌!xpoker怎么作弊... 透视好牌!xpoker怎么作弊,友间十三道有什么窍门(本来是有挂)1、友间十三道有什么窍门透视辅助简...
透视黑科技!poker红龙辅助... 透视黑科技!poker红龙辅助,填大坑辅助器视频(本来有挂)一、填大坑辅助器视频软件透明挂的定义与意...
透视模拟器!德普之星透视辅助软... 透视模拟器!德普之星透视辅助软件,透视辅助工具(竟然是有挂)1、首先打开透视辅助工具最新版本,在透视...
透视有挂!拱趴大菠萝机器人,至... 透视有挂!拱趴大菠萝机器人,至余干辅助(好像是有挂);1、每一步都需要思考,不同水平的挑战会更加具有...
透视工具!wepoker透视脚... 透视工具!wepoker透视脚本免费使用视频,微信小程序多乐辅助器下载(果然是真的有挂);1、微信小...
透视苹果版!pokermast... 透视苹果版!pokermaster脚本,四川长牌辅助(竟然是真的有挂);1、下载好四川长牌辅助辅助软...
透视游戏!wepoker手机版... 透视游戏!wepoker手机版辅助,斗棋崇阳麻将辅助脚本(原来有挂)在进入斗棋崇阳麻将辅助脚本辅助挂...
透视黑科技!wejoker开挂... 透视黑科技!wejoker开挂,微友三代辅助(都是真的有挂)1、进入到微友三代辅助黑科技之后,能看到...
透视app!wepoker软件... 透视app!wepoker软件靠谱么,凑一桌辅助软件免费(一贯存在有挂);1、每一步都需要思考,不同...