flutter eventbus往上一个页面传值

1、首先引入插件

event_bus: ^1.1.0

2、然后创建个event_util.dart

import 'package:event_bus/event_bus.dart';
export 'dart:async';
class EventBusUtil {
  static EventBus _eventBus;

  static EventBus getInstance() {
    if (_eventBus == null) {
      _eventBus = new EventBus();
    }
    return _eventBus;
  }


}

class PageEvent{
  String test;
  PageEvent(this.test);

}

3、然后创建第一个页面event_bus_demo.dart

import 'package:demo/demo/event/event_bus_demo2.dart';
import 'package:demo/demo/event/event_util.dart';
import 'package:flutter/material.dart';

class EventBusDemo extends StatefulWidget {
  @override
  _EventBusDemoState createState() => _EventBusDemoState();
}

class _EventBusDemoState extends State<EventBusDemo> {
  StreamSubscription<PageEvent> sss;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView(
        children: <Widget>[
          FlatButton(
            onPressed: () {
              sss = EventBusUtil.getInstance().on<PageEvent>().listen((data) {
                print('${data.test}');
                sss.cancel();
              });

              
              Navigator.push(context,
                  MaterialPageRoute(builder: (context) => EventBusDemo2()));
            },
            child: Text('点我进入下一页'),
          ),
        ],
      ),
    );
  }
}

4、接着创建第二个页面event_bus_demo2.dart

import 'package:demo/demo/event/event_util.dart';
import 'package:flutter/material.dart';

class EventBusDemo2 extends StatefulWidget {
  @override
  _EventBusDemo2State createState() => _EventBusDemo2State();
}

class _EventBusDemo2State extends State<EventBusDemo2> {
  StreamSubscription<PageEvent> sss;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Container(
      child: FlatButton(
        onPressed: () {
          EventBusUtil.getInstance().fire(PageEvent('我是测试'));
        },
        child: Text('点我网上一页传值'),
      ),
    ));
  }
}

此时点击按钮将会把"我是测试"这四个字传个上一个页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值