Dart 颤振-如何实现带有粘性标题的复选框?

Dart 颤振-如何实现带有粘性标题的复选框?,dart,flutter,flutter-dependencies,Dart,Flutter,Flutter Dependencies,我试图用以下库实现粘性头 粘性标题列表1.0.2 和列表视图复选框的映射对象 Map<String, bool> valuesCarsHdr = { 'Cars': false, }; Map<String, bool> valuesCars = { 'Car11': false, 'Car12': false, 'Car13': false, 'Car14': false, 'Car15': false,

我试图用以下库实现粘性头

粘性标题列表1.0.2

和列表视图复选框的映射对象

  Map<String, bool> valuesCarsHdr = {
    'Cars': false,
  };
  Map<String, bool> valuesCars = {
    'Car11': false,
    'Car12': false,
    'Car13': false,
    'Car14': false,
    'Car15': false,
    'Car16': false,
    'Car17': false,
    'Car18': false,
    'Car19': false,
    'Car20': false,
    'Car21': false,
  };

  Map<String, bool> valuesHdrHeadlights = {
    'Headlights': false,
  };
  Map<String, bool> valuesHeadlights = {
    'Headlights1': false,
    'Headlights2': false,
    'Headlights3': false,
    'Headlights4': false,
    'Headlights5': false,
    'Headlights6': false,
    'Headlights7': false,
    'Headlights8': false,
    'Headlights9': false,
    /...

  };
Map valuesCarsHdr={
"车":假,,
};
映射值scars={
“Car11”:假,
“Car12”:错误,
“Car13”:错误,
“Car14”:错误,
“Car15”:错误,
“Car16”:错误,
“Car17”:错误,
“Car18”:错误,
“Car19”:错误,
“Car20”:假,
“Car21”:错误,
};
地图值shdr前照灯={
“头灯”:错误,
};
地图值辅助照明={
“头灯1”:错误,
“头灯2”:错误,
“头灯3”:错误,
“头灯4”:错误,
“头灯5”:错误,
“头灯6”:错误,
“头灯7”:错误,
“头灯8”:错误,
“头灯9”:错误,
/...
};
根据指示,我尝试了以下方法

  @override
  Widget build(BuildContext context) {
    this.widget.context = context;
    final Size screenSize = MediaQuery.of(context).size;

    return new Scaffold(
        appBar: new AppBar(
          title: new Text('Select Items'),
        ),
        body: new Container(
            height: screenSize.height,
            child: new StickyList(
              children: <StickyListRow>[
                new HeaderRow(child: _myHeaderCarsRow()),
                new RegularRow(child: _myRegularCarsRow()),
                new HeaderRow(child: _myHeaderCarsRow()),
                new RegularRow(child: _myRegularCarsRow())
              ],
            )));
  }

  Widget _myHeaderCarsRow()
  {
    return  new ListView(
      children: valuesCarsHdr.keys.map((String key) {
        return new CheckboxListTile(
          title: new Text(key),
          value: valuesCarsHdr[key],
          onChanged: (bool value) {
            setState(() {
              valuesCarsHdr[key] = value;
            });
          },
        );
      }).toList(),
    );
  }
  Widget _myRegularCarsRow()
  {
    return  new ListView(
      children: valuesCars.keys.map((String key) {
        return new CheckboxListTile(
          title: new Text(key),
          value: valuesCars[key],
          onChanged: (bool value) {
            setState(() {
              valuesCars[key] = value;
            });
          },
        );
      }).toList(),
    );
  }
@覆盖
小部件构建(构建上下文){
this.widget.context=上下文;
最终大小screenSize=MediaQuery.of(context.Size);
归还新脚手架(
appBar:新的appBar(
标题:新文本(“选择项”),
),
主体:新容器(
高度:屏幕大小。高度,
子:新的粘滞列表(
儿童:[
新HeaderRow(子项:_myHeaderCarsRow()),
新RegularRow(子项:_myRegularCarsRow()),
新HeaderRow(子项:_myHeaderCarsRow()),
新建RegularRow(子项:\u myRegularCarsRow())
],
)));
}
Widget_myHeaderCarsRow()
{
返回新的ListView(
子项:valuesCarsHdr.keys.map((字符串键){
返回新的CheckboxListTile(
标题:新文本(关键),
值:valuesCarsHdr[key],
一旦更改:(布尔值){
设置状态(){
valuesCarsHdr[key]=值;
});
},
);
}).toList(),
);
}
Widget_myRegularCarsRow()
{
返回新的ListView(
子项:valuesCars.keys.map((字符串键){
返回新的CheckboxListTile(
标题:新文本(关键),
值:值标记[键],
一旦更改:(布尔值){
设置状态(){
valuesCars[键]=值;
});
},
);
}).toList(),
);
}
不知道我错过了什么。我的原木猫有以下几点

“package:flatter/src/rendering/sliver\u multi\u box\u adapter.dart”:失败的断言:第471行第12位:“child.hasSize”:不正确


非常感谢您的帮助。谢谢。

我想你误解了如何使用图书馆。下面是我如何创建列表的,您可以根据需要更改标题和列表视图

导入“包装:颤振/材料.省道”;
导入“package:sticky_header_list/sticky_header_list.dart”;
void main()=>runApp(新材料应用(
主页:新建MyApp(),
));
类MyApp扩展了StatefulWidget{
@凌驾
状态createState(){
返回新的MyAppState();
}
}
类MyAppState扩展了状态{
映射值SCARSHDR={
"车":假,,
};
映射值scars={
“Car11”:假,
“Car12”:错误,
“Car13”:错误,
“Car14”:错误,
“Car15”:错误,
“Car16”:错误,
“Car17”:错误,
“Car18”:错误,
“Car19”:错误,
“Car20”:假,
“Car21”:错误,
};
地图值shdr前照灯={
“头灯”:错误,
};
地图值辅助照明={
“头灯1”:错误,
“头灯2”:错误,
“头灯3”:错误,
“头灯4”:错误,
“头灯5”:错误,
“头灯6”:错误,
“头灯7”:错误,
“头灯8”:错误,
“头灯9”:错误,
};
@凌驾
小部件构建(构建上下文){
//this.widget.context=上下文;
最终大小screenSize=MediaQuery.of(context.Size);
归还新脚手架(
appBar:新的appBar(
标题:新文本(“选择项”),
),
主体:新容器(
子:新的粘滞列表(
儿童:[
新HeaderRow(子项:_myHeaderCarsRow(1)),
新RegularRow(子项:_myRegularCarsRow()),
新校长(子女:_myHeaderCarsRow(2)),
新建RegularRow(子项:\u myRegularCarsRow())
],
)));
}
Widget_myHeaderCarsRow(索引){
返回新行(
子项:[新文本(“标题$index”)],
);
}
Widget_myRegularCarsRow(){
返回新列(
子项:getRegularWidgets(),
);
}
列出getRegularWidgets(){
列表小部件=valuesCars.keys.map((键){
返回新的CheckboxListTile(
标题:新文本(关键),
值:值标记[键],
一旦更改:(布尔值){
设置状态(){
valuesCarsHdr[key]=值;
});
});
}).toList();
返回窗口小部件;
}
}

谢谢您的帮助。但是,此解决方案禁用复选框。复选框显示但不起作用。