最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

flutter傳遞值到任意widget(當(dāng)需要widget嵌套使用需要傳遞值的時(shí)候)

 更新時(shí)間:2019年07月24日 10:13:10   作者:zhakesipailuo  
這篇文章主要介紹了flutter傳遞值到任意widget(當(dāng)需要widget嵌套使用需要傳遞值的時(shí)候),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

如果我們有這樣一個(gè)應(yīng)用場(chǎng)景:

WidgetA執(zhí)行點(diǎn)擊之后將數(shù)據(jù)通過(guò)widgetB傳遞到其下的widgetC。

通??梢酝ㄟ^(guò)設(shè)置構(gòu)造函數(shù),傳遞對(duì)應(yīng)參數(shù)到制定的widget樹(shù)中,如下面代碼所描述:

表示需要將widgetA中的點(diǎn)擊改變內(nèi)容傳遞到widgetB中的widgetC中展示;

需要通過(guò)設(shè)置widgetB的構(gòu)造函數(shù),接收對(duì)應(yīng)參數(shù),再傳遞給widgetC展示;

class Inheritedwidget extends StatefulWidget {
 @override
 _InheritedWidgetState createState() => _InheritedWidgetState();
}
class _InheritedWidgetState extends State<Inheritedwidget> {
 int count=0;
 @override
 void initState() {
  // TODO: implement initState
  super.initState();
 }
 @override
 Widget build(BuildContext context) {
  print(count);
  return Scaffold(
   appBar: AppBar(title: Text("inherited widget"),),body: Container(
   child: Center(
    child: Column(
     children: <Widget>[
      Text("class0"),
      class1(count),
     ],
    ),
   ),
  ),
   floatingActionButton: FloatingActionButton(onPressed: (){
    return addCount();
   },child: Text("add"),),
  );
 }
 void addCount() {
  setState(() {
   count=1+count;
  });
 }
}

WidgetB:

class class1 extends StatelessWidget {
 int count;
 class1(this.count);
 @override
 Widget build(BuildContext context) {
  return Container(
   child: Column(
     children: <Widget>[
      Text("class1"),
      class2(count),
     ],
   ),
  );
 }
}

widgetC:

class class2 extends StatelessWidget {
 int count;
 class2(this.count);

 @override
 Widget build(BuildContext context) {
  return Container(
   child: Center(
    child: Text("$count"),
   ),
  );
 }
}

以上方法當(dāng)然可以實(shí)現(xiàn)需要的效果,但是當(dāng)有多層的widget嵌套關(guān)系的時(shí)候代碼閱讀性降低,可以通過(guò)以下方法傳遞值到指定的widget中;

通過(guò)類(lèi)似于Android中的contentProvider提供一個(gè)中間類(lèi),將需要傳遞的數(shù)據(jù)通過(guò)中間類(lèi)傳遞到制定的widget中。

中間類(lèi):

//countProvider類(lèi) 提供count屬性和child屬性 用于與原widget相關(guān)聯(lián),
class CountProvider extends InheritedWidget{
 final int count;
 final Widget child;
 //構(gòu)造方法
 CountProvider({this.count, this.child}):super(child:child);
 //提供方法獲取到countprovider類(lèi)對(duì)象
static CountProvider of(BuildContext context){
 return context.inheritFromWidgetOfExactType(CountProvider);
}
 @override
 bool updateShouldNotify(InheritedWidget oldWidget) {
  // TODO: implement updateShouldNotify
  return false;
 }
}

通過(guò)counterprovider包裹需要展示的widget并傳入需要改變的值;

class Inheritedwidget extends StatefulWidget {
 @override
 _InheritedWidgetState createState() => _InheritedWidgetState();
}
class _InheritedWidgetState extends State<Inheritedwidget> {
 int count=0;
 @override
 Widget build(BuildContext context) {
  print(count);
  return CountProvider(
   count:count,
   child: Scaffold(
    backgroundColor: Colors.blue,
    appBar: AppBar(title: Text("inherited widget"),),body: Container(
    child: Center(
     child: Column(
      children: <Widget>[
       Text("class0"),
       class1(),
      ],
     ),
    ),
   ),
    floatingActionButton: FloatingActionButton(onPressed: (){
     return addCount();
    },child: Text("add"),),
   ),
  );
 }
 void addCount() {
  setState(() {
   count=1+count;
  });
 }
}

使用中間類(lèi)提供的數(shù)據(jù)執(zhí)行更新對(duì)應(yīng)widget。

class class2 extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
  int count = CountProvider.of(context).count;
  return Container(
   child: Center(
    child: Text("$count"),
   ),
  );
 }
}

通過(guò)以上方法即可在不同widget中傳遞需要改變的值。

總結(jié)

以上所述是小編給大家介紹的flutter傳遞值到任意widget(當(dāng)需要widget嵌套使用需要傳遞值的時(shí)候),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • Android跳轉(zhuǎn)到通訊錄獲取用戶名稱(chēng)和手機(jī)號(hào)碼的實(shí)現(xiàn)思路

    Android跳轉(zhuǎn)到通訊錄獲取用戶名稱(chēng)和手機(jī)號(hào)碼的實(shí)現(xiàn)思路

    這篇文章主要介紹了Android跳轉(zhuǎn)到通訊錄獲取用戶名稱(chēng)和手機(jī)號(hào)碼的實(shí)現(xiàn)思路,當(dāng)用戶點(diǎn)擊跳轉(zhuǎn)到通訊錄界面 并取通訊錄姓名和手機(jī)號(hào)碼 ,實(shí)現(xiàn)代碼簡(jiǎn)單易懂,非常不錯(cuò)感興趣的朋友一起看看吧
    2016-10-10
  • Android Studio實(shí)現(xiàn)幀動(dòng)畫(huà)

    Android Studio實(shí)現(xiàn)幀動(dòng)畫(huà)

    這篇文章主要為大家詳細(xì)介紹了Android Studio實(shí)現(xiàn)幀動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 詳談OnTouchListener與OnGestureListener的區(qū)別

    詳談OnTouchListener與OnGestureListener的區(qū)別

    下面小編就為大家?guī)?lái)一篇詳談OnTouchListener與OnGestureListener的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • Android滑動(dòng)沖突的完美解決方案

    Android滑動(dòng)沖突的完美解決方案

    在Android開(kāi)發(fā)中滑動(dòng)沖突可以說(shuō)是比較常見(jiàn)的一類(lèi)問(wèn)題,也是比較讓人頭疼的一類(lèi)問(wèn)題,兩個(gè)原本完美的控件,組合在一起之后,忽然發(fā)現(xiàn)整個(gè)世界都不好了?;瑒?dòng)沖突主要分為同方向滑動(dòng)沖突和不同方向滑動(dòng)沖突,下面本文將詳細(xì)說(shuō)明兩種滑動(dòng)沖突如何解決。
    2016-08-08
  • Android中使用PagerSlidingTabStrip實(shí)現(xiàn)導(dǎo)航標(biāo)題的示例

    Android中使用PagerSlidingTabStrip實(shí)現(xiàn)導(dǎo)航標(biāo)題的示例

    本篇文章主要介紹了Android中使用PagerSlidingTabStrip實(shí)現(xiàn)導(dǎo)航標(biāo)題的示例,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • Android簡(jiǎn)單實(shí)現(xiàn)自定義流式布局的方法

    Android簡(jiǎn)單實(shí)現(xiàn)自定義流式布局的方法

    這篇文章主要介紹了Android簡(jiǎn)單實(shí)現(xiàn)自定義流式布局的方法,結(jié)合實(shí)例形式分析了Android流式布局的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-07-07
  • android開(kāi)發(fā)基礎(chǔ)教程—文件存儲(chǔ)功能實(shí)現(xiàn)

    android開(kāi)發(fā)基礎(chǔ)教程—文件存儲(chǔ)功能實(shí)現(xiàn)

    文件存儲(chǔ)功能在實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě)時(shí)會(huì)頻繁使用到,接下來(lái)介紹文件存儲(chǔ)功能的實(shí)現(xiàn),感興趣的朋友可以了解下
    2013-01-01
  • 說(shuō)說(shuō)在Android如何使用服務(wù)(Service)的方法

    說(shuō)說(shuō)在Android如何使用服務(wù)(Service)的方法

    這篇文章主要介紹了說(shuō)說(shuō)在Android如何使用服務(wù)(Service)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Android Coil對(duì)比Glide深入分析探究

    Android Coil對(duì)比Glide深入分析探究

    這篇文章主要介紹了Android Coil對(duì)比Glide,Coil是Android上的一個(gè)全新的圖片加載框架,它的全名叫做coroutine image loader,即協(xié)程圖片加載庫(kù)
    2023-02-02
  • Android View的事件分發(fā)詳解

    Android View的事件分發(fā)詳解

    我們?cè)趯W(xué)習(xí)View的時(shí)候,不可避免會(huì)遇到事件的分發(fā),而往往遇到的很多滑動(dòng)沖突的問(wèn)題都是由于處理事件分發(fā)時(shí)不恰當(dāng)所造成的。因此,深入了解View事件分發(fā)機(jī)制的原理,對(duì)于我們來(lái)說(shuō)是很有必要的。
    2017-12-12

最新評(píng)論

鸡泽县| 安远县| 芒康县| 衡阳市| 元阳县| 曲阳县| 辛集市| 买车| 临洮县| 梅河口市| 齐河县| 中牟县| 九江县| 开原市| 娱乐| 秦皇岛市| 繁峙县| 西藏| 都安| 尚义县| 威信县| 广汉市| 尤溪县| 白山市| 武功县| 峡江县| 黑河市| 谢通门县| 万州区| 交口县| 三亚市| 巴彦淖尔市| 龙山县| 北安市| 乐业县| 铁力市| 梓潼县| 延边| 珠海市| 定西市| 汤阴县|