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

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

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

如果我們有這樣一個應用場景:

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

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

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

需要通過設(shè)置widgetB的構(gòu)造函數(shù),接收對應參數(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"),
   ),
  );
 }
}

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

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

中間類:

//countProvider類 提供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類對象
static CountProvider of(BuildContext context){
 return context.inheritFromWidgetOfExactType(CountProvider);
}
 @override
 bool updateShouldNotify(InheritedWidget oldWidget) {
  // TODO: implement updateShouldNotify
  return false;
 }
}

通過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;
  });
 }
}

使用中間類提供的數(shù)據(jù)執(zhí)行更新對應widget。

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

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

總結(jié)

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

相關(guān)文章

  • Android跳轉(zhuǎn)到通訊錄獲取用戶名稱和手機號碼的實現(xiàn)思路

    Android跳轉(zhuǎn)到通訊錄獲取用戶名稱和手機號碼的實現(xiàn)思路

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

    Android Studio實現(xiàn)幀動畫

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

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

    下面小編就為大家?guī)硪黄斦凮nTouchListener與OnGestureListener的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android滑動沖突的完美解決方案

    Android滑動沖突的完美解決方案

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

    Android中使用PagerSlidingTabStrip實現(xiàn)導航標題的示例

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

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

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

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

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

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

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

    Android Coil對比Glide深入分析探究

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

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

    我們在學習View的時候,不可避免會遇到事件的分發(fā),而往往遇到的很多滑動沖突的問題都是由于處理事件分發(fā)時不恰當所造成的。因此,深入了解View事件分發(fā)機制的原理,對于我們來說是很有必要的。
    2017-12-12

最新評論

嘉义县| 微博| 安多县| 精河县| 五家渠市| 甘洛县| 沙雅县| 天峻县| 垦利县| 宜黄县| 田东县| 岳池县| 安阳市| 光山县| 肇东市| 滦平县| 宁南县| 芜湖市| 辽宁省| 宁都县| 辽阳市| 三都| 新龙县| 福州市| 泰州市| 兴和县| 象州县| 阿勒泰市| 田东县| 沙田区| 江山市| 洛隆县| 朝阳县| 衡山县| 土默特左旗| 望城县| 乾安县| 亳州市| 垦利县| 桓台县| 龙口市|