『Flutter』組件通信傳值學習

flutter 組件通信學習~

父子組件正向傳值

class Parent extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return ParentState();
  }
}
class ParentState extends State<Parent> {
  String data = "無";
  String dataTwo = "傳遞給組件2的值";

  void onChanged(val){
    setState(() {
      data = val;
    });
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new Center(
      child: new Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          new Container(
            width: 400,
            margin: const EdgeInsets.all(10),
            padding: const EdgeInsets.only(top: 30, bottom: 50),
            decoration: BoxDecoration(color: Colors.blue[100]),
            child: new Column(
              children: <Widget>[
                new childOne(),
                new childTwo(dataTwo: dataTwo,callBack: (value)=>onChanged(value)),
                new Container(
                  padding: new EdgeInsets.only(bottom: 15),
                  child: new Text('父組件'),
                ),
                new Text('子組件2贞岭,傳過來的值' + '$data'),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

定義父組件變量 dataTwo脑沿,在子組件childTwo的構造方法中把值穿進去昆禽。
在childTwo中重新定義構造方法。其中dataTwo就是從父組件傳進來的值。

class childTwo extends StatefulWidget {
  childTwo({Key key, this.dataTwo, this.callBack}) : super(key: key);
  final callBack;
  String dataTwo;

對于dataTwo的值我們可以在 initState中通過widget.dataTwo拿到蹈矮。

  @override
  void initState() {
    // TODO: implement initState
    data = widget.dataTwo;
    super.initState();
  }

父子組件間逆向傳值

其實父子組件傳值有點像vue的傳值,搞過vue的應該挺好理解這個鸣驱。
自定義構造方法中

  void onChanged(val){
    setState(() {
      data = val;
    });
  }
 new childTwo(dataTwo: dataTwo,callBack: (value)=>onChanged(value))

在父組件提前定義好泛鸟,接收到子組件調用的方法,onchanged踊东。
在子組件中
自定義構造方法把callBack方法傳進來

 childTwo({Key key, this.dataTwo, this.callBack}) : super(key: key);
  final callBack;
  String dataTwo;

可以調用下面的方法進行傳值北滥。

widget.callBack('$inputText');

組件和組件之間的傳值

在這里運用event_bus來實現(xiàn)傳值。

import 'package:event_bus/event_bus.dart';

event_bus用法闸翅。
新建消息監(jiān)測類

import 'package:event_bus/event_bus.dart';
EventBus eventBus = new EventBus();
class TransEvent{
  String text;
  TransEvent(this.text);
}

監(jiān)測類變化

 eventBus.on<TransEvent>().listen((TransEvent data) => show(data.text));

 void show(String val) {
    setState(() {
      data = val;
    });
  }

觸發(fā)消息變化

 eventBus.fire(new TransEvent('$inputText'));

這樣我們就可以根據(jù)這些來實現(xiàn)組件之間的傳值再芋。

https://github.com/Butteryflyyer/FlutterStudyDemo這是我學習flutter的代碼地址,平時寫的demo都會放到這里面坚冀。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末祝闻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子遗菠,更是在濱河造成了極大的恐慌,老刑警劉巖华蜒,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辙纬,死亡現(xiàn)場離奇詭異,居然都是意外死亡叭喜,警方通過查閱死者的電腦和手機贺拣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捂蕴,“玉大人譬涡,你說我怎么就攤上這事∩侗妫” “怎么了涡匀?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長溉知。 經常有香客問我陨瘩,道長,這世上最難降的妖魔是什么级乍? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任舌劳,我火速辦了婚禮,結果婚禮上玫荣,老公的妹妹穿的比我還像新娘甚淡。我一直安慰自己,他們只是感情好捅厂,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布贯卦。 她就那樣靜靜地躺著资柔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪脸侥。 梳的紋絲不亂的頭發(fā)上建邓,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音睁枕,去河邊找鬼官边。 笑死,一個胖子當著我的面吹牛外遇,可吹牛的內容都是我干的注簿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼跳仿,長吁一口氣:“原來是場噩夢啊……” “哼诡渴!你這毒婦竟也來了?” 一聲冷哼從身側響起菲语,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤妄辩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后山上,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體眼耀,經...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年佩憾,在試婚紗的時候發(fā)現(xiàn)自己被綠了哮伟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡妄帘,死狀恐怖楞黄,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情抡驼,我是刑警寧澤鬼廓,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站婶恼,受9級特大地震影響桑阶,放射性物質發(fā)生泄漏。R本人自食惡果不足惜勾邦,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一蚣录、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧眷篇,春花似錦萎河、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玛歌。三九已至,卻和暖如春擎椰,著一層夾襖步出監(jiān)牢的瞬間支子,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工达舒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留值朋,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓巩搏,卻偏偏與公主長得像昨登,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贯底,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容

  • 組件(Component)是Vue.js最核心的功能丰辣,也是整個架構設計最精彩的地方,當然也是最難掌握的禽捆。...
    六個周閱讀 5,617評論 0 32
  • 前言 您將在本文當中了解到,往網頁中添加數(shù)據(jù),從傳統(tǒng)的dom操作過渡到數(shù)據(jù)層操作,實現(xiàn)同一個目標,兩種不同的方式....
    itclanCoder閱讀 25,806評論 1 12
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內容笙什,還有我對于 Vue 1.0 印象不深的內容。關于...
    云之外閱讀 5,050評論 0 29
  • # 傳智播客vue 學習## 1. 什么是 Vue.js* Vue 開發(fā)手機 APP 需要借助于 Weex* Vu...
    再見天才閱讀 3,549評論 0 6
  • 有些人問我為什么放著簡筆的愛不寫胚想,為什么總喜歡用愛這個繁體字得湘,因為愛需要用心才能真正成為愛啊,在我的潛意識里顿仇,我可...
    愛昔閱讀 152評論 0 1