当前位置: 首页 > 后端技术 > Python

Flutter跨组件传递事件

时间:2023-03-26 12:34:22 Python

Step1.引入第三方库在pubspec.yaml中引入event_bus:^1.1.12.定义组件间传递的对象classUserInfo{Stringnickname;国际水平;UserInfo(this.nickname,this.level);}3.创建全局EventBus对象finaleventBus=EventBus();4.在widget中发送事件FlatButton(child:Text("Testbutton",style:TextStyle(color:Colors.white)),color:Colors.orange,//按钮onPressed的颜色:(){finalinfo=UserInfo("为什么",18);eventBus.fire(info);},),5.在另一个widget中监听事件@overridevoidinitState(){super.initState();eventBus.on().listen((data){setState((){message="${data.nickname}-${data.level}";});});}完整代码import'package:flutter/material.dart';import'package:event_bus/event_bus.dart';voidmain(){runApp(MyApp());}classUserInfo{Stringnickname;国际水平;UserInfo(this.nickname,this.level);}classMyAppextendsStatelessWidget{//这个小部件是你的应用程序的根。@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(title:'FlutterDemo',theme:ThemeData(primarySwatch:Colors.blue,),home:MyHomePage(title:'FlutterDemoHomePage'),);}}classMyHomePageextendsStatefulWidget{MyHomePage({Keykey,this.title}):super(key:key);最终字符串标题;@override_MyHomePageStatecreateState()=>_MyHomePageState();}class_MyHomePageStateextendsState{finaleventBus=EventBus();Stringmessage="HelloCoderwhy";@overridevoidinitState(){super.initState();eventBus.on().listen((data){setState((){message="${data.nickname}-${data.level}";});});}@overrideWidgetbuild(BuildContextcontext){returnScaffold(appBar:AppBar(title:Text(widget.title),),body:Center(child:Column(mainAxisAlignment:MainAxisAlignment.center,children:[Text(message,style:Theme.of(context).textTheme.headline4,),FlatButton(child:Text("Testbutton",style:TextStyle(color:Colors.white))),color:Colors.orange,//按钮颜色onPressed:(){finalinfo=UserInfo("why",18);eventBus.fire(info);},),],),),);}}参考Flutter写的app,需要源码的可以私信~~火星字体简繁体转换哄女朋友的神器号数衡量好坏电视节目直播表最好的笔记软件https://www.wolai.com/signup?...