飞镖子级:_list.keys.map(){}有时返回null

时间:2018-12-12 02:40:18

标签: dart flutter

我正在从“ 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
  };

0 个答案:

没有答案