The null object does not have a method []=

Issue

I’m trying to run this following example minus some differences in pubspect.yaml since it doesn’t run out of the box. Namely reflections needs to be 0.2.0 instead of 0.1.4 as seen on the example link.

Everything compiles fine. However I get a runtime error. I traced it to the following file:

https://github.com/dart-lang/polymer-dart/blob/behaviors/lib/init.dart

On line 25 I get the following error in the Dartium browser:

The null object does not have a method '[]='.

NoSuchMethodError: method not found: '[]='
Receiver: null
Arguments: ["push", Closure: (List, Iterable) => dynamic]
#0      Object._noSuchMethod (dart:core-patch/object_patch.dart:42)
#1      Object.noSuchMethod (dart:core-patch/object_patch.dart:45)
#2      _setUpListMethods (package:polymer/init.dart:25:14)
#3      initPolymer.<initPolymer_async_body> (package:polymer/init.dart:17:3)
#4      _RootZone.runUnary (dart:async/zone.dart:1204)
#5      _FutureListener.handleValue (dart:async/future_impl.dart:131)
#6      _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:637)
#7      _Future._propagateToListeners (dart:async/future_impl.dart:667)
#8      _Future._completeWithValue (dart:async/future_impl.dart:477)
#9      _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:528)
#10     _microtaskLoop (dart:async/schedule_microtask.dart:41)
#11     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#12     _ScheduleImmediateHelper._handleMutation (dart:html:49308)

My pubspec.yaml

name: myproject
dependencies:
  polymer: ^1.0.0-rc
  web_components: ^0.12.0
  browser: ^0.10.0
  reflectable: ^0.2.0
transformers:
- reflectable:
    entry_points:
    - web/main.dart
environment:
  sdk: ">=1.2.0 <2.0.0"

dependency_overrides:
  polymer:
    git:
      ref: behaviors 
      url: https://github.com/dart-lang/polymer-dart.git
  polymer_interop:
    git:
      ref: 0.2.0-dev
      url: https://github.com/dart-lang/polymer_interop.git

pubspec.lock

# Generated by pub
# See http://pub.dartlang.org/doc/glossary.html#lockfile
packages:
  analyzer:
    description:
      name: analyzer
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.26.4"
  args:
    description:
      name: args
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.13.4+2"
  async:
    description:
      name: async
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.11.0"
  barback:
    description:
      name: barback
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.15.2+8"
  boolean_selector:
    description:
      name: boolean_selector
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.0.2"
  browser:
    description:
      name: browser
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.10.0+2"
  charcode:
    description:
      name: charcode
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.1.0"
  cli_util:
    description:
      name: cli_util
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.0.1+2"
  code_transformers:
    description:
      name: code_transformers
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.11"
  collection:
    description:
      name: collection
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.9.0"
  convert:
    description:
      name: convert
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.0.0"
  crypto:
    description:
      name: crypto
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.0.1"
  csslib:
    description:
      name: csslib
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.13.2"
  dart_style:
    description:
      name: dart_style
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.1"
  glob:
    description:
      name: glob
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.1.3"
  html:
    description:
      name: html
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.12.2+2"
  http_multi_server:
    description:
      name: http_multi_server
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.0.2"
  http_parser:
    description:
      name: http_parser
      url: "https://pub.dartlang.org"
    source: hosted
    version: "3.0.2"
  initialize:
    description:
      name: initialize
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.6.1+2"
  logging:
    description:
      name: logging
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.11.3"
  matcher:
    description:
      name: matcher
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.12.0+2"
  mime:
    description:
      name: mime
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.9.3"
  package_config:
    description:
      name: package_config
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.1.5"
  path:
    description:
      name: path
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.3.9"
  plugin:
    description:
      name: plugin
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.1.0"
  polymer:
    description:
      ref: behaviors
      resolved-ref: "46be7836f387a8a2868507baf61940e871519986"
      url: "https://github.com/dart-lang/polymer-dart.git"
    source: git
    version: "0.17.0-dev"
  polymer_interop:
    description:
      ref: "0.2.0-dev"
      resolved-ref: cbef534ef5d0839beeeb63f7c25f502df7e79377
      url: "https://github.com/dart-lang/polymer_interop.git"
    source: git
    version: "0.2.0"
  pool:
    description:
      name: pool
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.2.4"
  pub_semver:
    description:
      name: pub_semver
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.3.0"
  reflectable:
    description:
      name: reflectable
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.0"
  shelf:
    description:
      name: shelf
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.6.5+2"
  shelf_static:
    description:
      name: shelf_static
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.4"
  shelf_web_socket:
    description:
      name: shelf_web_socket
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.1"
  source_map_stack_trace:
    description:
      name: source_map_stack_trace
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.0.4"
  source_maps:
    description:
      name: source_maps
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.10.1+1"
  source_span:
    description:
      name: source_span
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.2.3"
  stack_trace:
    description:
      name: stack_trace
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.6.6"
  stream_channel:
    description:
      name: stream_channel
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.5.0"
  string_scanner:
    description:
      name: string_scanner
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.0.0"
  test:
    description:
      name: test
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.12.15+1"
  typed_data:
    description:
      name: typed_data
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.1.3"
  unittest:
    description:
      name: unittest
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.11.6+4"
  utf:
    description:
      name: utf
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.9.0+3"
  watcher:
    description:
      name: watcher
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.9.7+2"
  web_components:
    description:
      name: web_components
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.12.0+4"
  web_socket_channel:
    description:
      name: web_socket_channel
      url: "https://pub.dartlang.org"
    source: hosted
    version: "1.0.4"
  when:
    description:
      name: when
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.2.0"
  which:
    description:
      name: which
      url: "https://pub.dartlang.org"
    source: hosted
    version: "0.1.3"
  yaml:
    description:
      name: yaml
      url: "https://pub.dartlang.org"
    source: hosted
    version: "2.1.10"
sdk: ">=1.17.0-dev.6.2 <1.20.0"

That’s as far as I got. Again, all the other files are identical to that example.

Seems to be a dependency problem but I really don’t know where to go from here to make the example run. Is it possible to fix this error? I know dart-polymer is still in RC but I’d think that simple example would run…

Update
Seems to fail on setUpListMethods() in polymer/init.dart because context variable array does not exist. I created a breakpoint and context is not found within the scope. Where is context declared? It still smells like a dependency problem.

Solution

If you use a recent Polymer 1.0.0-rc.x version you need to add the polymer transformer instead of the reflectable transformer

transformers:
- polymer:
    entry_points:
    - web/index.html

See also https://github.com/dart-lang/polymer-dart

Answered By – Günter Zöchbauer

Answer Checked By – David Goodson (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published.