Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何通过颤振中的多个类读取数据?_Flutter_Dart - Fatal编程技术网

Flutter 如何通过颤振中的多个类读取数据?

Flutter 如何通过颤振中的多个类读取数据?,flutter,dart,Flutter,Dart,我在工作中做一个颤振项目,我遇到了一个高原 我有一个models文件夹,我在其中创建了一个类,它基本上保存了一个对象列表,这些对象具有我想在小部件中更改的特定属性。然后,我希望看到该属性的更改反映在之后的列表中,以便能够在另一个小部件/屏幕中读取该属性。我可以轻松地更改小部件内的属性,但由于范围的原因,更改不会反映在models文件夹的列表中 我有一个屏幕,其中我呈现了几个卡片小部件。这些卡片小部件是从前面提到的对象列表中呈现和构建的。每一张卡片都有一个构造函数,它接受三个属性,其中一个属性是我

我在工作中做一个颤振项目,我遇到了一个高原

我有一个models文件夹,我在其中创建了一个类,它基本上保存了一个对象列表,这些对象具有我想在小部件中更改的特定属性。然后,我希望看到该属性的更改反映在之后的列表中,以便能够在另一个小部件/屏幕中读取该属性。我可以轻松地更改小部件内的属性,但由于范围的原因,更改不会反映在models文件夹的列表中

我有一个屏幕,其中我呈现了几个卡片小部件。这些卡片小部件是从前面提到的对象列表中呈现和构建的。每一张卡片都有一个构造函数,它接受三个属性,其中一个属性是我希望在卡片小部件状态中更改时能够读取的特定属性。然而,我不知道怎么做

列表->构建卡(属性1、属性2、属性3)->更改卡内属性3。 如何更改列表中的实际属性

  • 这就是我指的清单
  • 类可用计划{
    静态列表选项=[
    平面卡(
    计划:“美式足球”,
    isMarked:错,
    变体:[''],
    ),
    平面卡(
    计划:“足球”,
    isMarked:错,
    变体:[
    "足球11v11",,
    “足球美国9v9”,
    “足球美国7v7”,
    “足球美国4v4”,
    “足球DBU 8v8”,
    “足球DBU 5v5”,
    “足球DBU 3v3”,
    “足球SvFF 3v3”,
    “足球SvFF 5v5”,
    “足球SvFF 7v7”,
    “足球SvFF 9v9”,
    ],
    ),
    平面卡(
    计划:“棒球”,
    isMarked:错,
    变体:[],
    ),
    平面卡(
    平面图:“标准几何图形”,
    isMarked:错,
    变体:[],
    ),
    平面卡(
    平面图:“扩展几何体”,
    isMarked:错,
    变体:[],
    ),
    平面卡(
    计划:“自由格式文本”,
    isMarked:错,
    变体:[],
    ),
    ];
    
  • 这是从屏幕/小部件内部生成的,其中每个卡都使用列表中的属性进行构建。我要读取的属性是“isMarked”属性
  • SliverList(
    代表:SliverChildBuilderDelegate(
    (上下文、索引){
    返回计划卡(
    计划:计划[索引]。计划,
    isMarked:计划[索引]。isMarked,
    变量:计划[索引]。变量,
    );
    },
    childCount:plans.length,
    ),
    ),
    
  • 在Card小部件中,我在setState中更改isMarked局部变量。但是,我还想更改列表中所需对象的实际isMarked属性
  • class PlanCard扩展StatefulWidget{
    最终管柱计划;
    最后清单变型;
    布尔被标记;
    bool-isExpanded=false;
    PlanCard({this.plan,this.isMarked,this.variants});
    @凌驾
    _PlanCardState createState();
    }
    类_PlanCardState扩展状态{
    void _saveStateFromBoxes(){
    设置状态(){
    widget.isMarked=!widget.isMarked;
    打印(widget.isMarked);
    });
    }
    
    要访问列表的单个属性,需要访问每个元素,然后调用该属性

    class PlanCardView extends StatelessWidget {
      final List<PlanCard> planCards;
    
      PlanCardView({
        Key key,
        this.planCards,
      }) : super(key: key);
       
      Widget build(BuildContext context) {
        return ListView.builder(
          scrollDirection: Axis.horizontal,
          itemCount: planCards.length,
          itemBuilder: (BuildContext context, int index) {
            PlanCard planCard = planCards[index]; //getData;
            return Container(
              child:Text(planCard.isMarked)  //access isMarked
          );
        }
      );
    }
    
    class PlanCardView扩展了无状态小部件{
    最终清单和卡片;
    平面视图({
    关键点,
    这张卡片,
    }):super(key:key);
    小部件构建(构建上下文){
    返回ListView.builder(
    滚动方向:轴水平,
    itemCount:planCards.length,
    itemBuilder:(构建上下文,int索引){
    PlanCard PlanCard=planCards[index];//获取数据;
    返回容器(
    子级:Text(planCard.isMarked)//访问被标记
    );
    }
    );
    }
    
    您需要将PlanCard列表传递给该类,然后它将在文本小部件中打印所有isMarked属性