我正在从“ showDialog”内的屏幕调用此小部件。一切正常,突然_list.keys.map抛出异常
class CheckboxDialog extends StatefulWidget {
final Map<String, bool> list;
CheckboxDialog(this.list);
@override
_CheckboxDialogState createState() => _CheckboxDialogState();
}
class _CheckboxDialogState extends State<CheckboxDialog> {
Map<String, bool> _list;
@override
void initState() {
super.initState();
_list = widget.list;
}
void _updateList() {
print(_list);
Navigator.pop(context, _list);
}
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: <Widget>[
Container(
height: MediaQuery.of(context).size.height - 150,
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: _list.keys.map(
(key) {
CheckboxListTile(
title: Text(key),
value: _list[key],
onChanged: (bool value) {
setState(() {
_list[key] = value;
});
},
);
},
).toList(),
),
),
),
OutlineButton(
child: Text("Done"),
onPressed: _updateList,
),
],
),
);
}
}
StackTrace:
I/flutter ( 9363): #176 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3732:16)
I/flutter ( 9363): #177 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5)
I/flutter ( 9363): #178 StatefulElement.update (package:flutter/src/widgets/framework.dart:3878:5)
I/flutter ( 9363): #179 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15)
I/flutter ( 9363): #180 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3732:16)
I/flutter ( 9363): #181 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5)
I/flutter ( 9363): #182 ProxyElement.update (package:flutter/src/widgets/framework.dart:3990:5)
I/flutter ( 9363): #183 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15)
I/flutter ( 9363): #184 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4867:14)
I/flutter ( 9363): #185 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15)
I/flutter ( 9363): #186 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3732:16)
I/flutter ( 9363): #187 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5)
I/flutter ( 9363): #188 StatefulElement.update (package:flutter/src/widgets/framework.dart:3878:5)
I/flutter ( 9363): #189 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15)
I/flutter ( 9363): #190 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4867:14)
I/flutter ( 9363): #191 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15)
I/flutter ( 9363): #192 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:4867:14)
I/flutter ( 9363): #193 Element.updateChild (package:flutter/src/widgets/framework.dart:2742:15)
I/flutter ( 9363): #194 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3732:16)
I/flutter ( 9363): #195 Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5)
I/flutter ( 9363): #196 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2286:33)
I/flutter ( 9363): #197 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:676:20)
I/flutter ( 9363): #198 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:219:5)
I/flutter ( 9363): #199 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter ( 9363): #200 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter ( 9363): #201 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
I/flutter ( 9363): #202 _invoke (dart:ui/hooks.dart:154:13)
I/flutter ( 9363): #203 _drawFrame (dart:ui/hooks.dart:143:3)
I/flutter ( 9363): (elided 2 frames from class _AssertionError)
I/flutter ( 9363): ════════════════════════════════════════════════════════════════════════════════════════════════════
我这样称呼它。
_actions = await showDialog(
context: context,
builder: (BuildContext context) {
return Container(
padding: EdgeInsets.all(32.0),
child: Material(
borderRadius: BorderRadius.circular(4),
child: CheckboxDialog(_parts),
));
});
其中_actions是地图。
Map<String, bool> _actions = {
"Run": true,
"Sit": false,
"Drive": false,
"Crouch": false,
"Kick": false
};