第18章异步编程-bloc_provider-main

防采集标记:亢少军老师的课程和资料

//stream_bloc_provider_main.dart文件
import 'package:flutter/material.dart';

import 'blocs/bloc_provider.dart';
import 'blocs/bloc_counter.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'BlocProvider示例',
      //将BlocProvider放入顶层组件
      home: BlocProvider(
          //首页
          child: MyHomePage(),
          //所有的bloc
          blocs: [BlocCounter()]),
    );
  }
}

class MyHomePage extends StatefulWidget {

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State
  
  
   
    {
  //计数器值
  int _counter = 0;

  //增加方法
  void _incrementCounter() {
    //通过BlocProvider的of方法获取到所有bloc
    //然后取第一个bloc并调用其increment方法向流中添加数据
    BlocProvider.of
   
   
    
    (context).first.increment(_counter);
  }

  @override
  void initState() {
    //通过BlocProvider的of方法获取到所有bloc
    //然后取第一个bloc并调用其listen进行监听流的数据
    BlocProvider.of
    
    
     
     (context).first.counter.listen((_count) {
      //设置状态,重新渲染界面
      setState(() {
        _counter = _count;
      });
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BlocProvider示例'),
      ),
      body: Center(
        //渲染流中取出的数据
        child: Text(
          '$_counter',
          style: Theme.of(context).textTheme.display1,
        ),
      ),
      //增加按钮
      floatingActionButton: FloatingActionButton(
        //点击事件
        onPressed: _incrementCounter,
        child: Icon(Icons.add),
      ),
    );
  }
}

    
    
   
   
  
  

@作者: 亢少军

'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亢少军

致力于跨平台技术开发

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值