srawlins / timezone

Time zone database and time zone aware DateTime object for Dart.
BSD 2-Clause "Simplified" License
102 stars 54 forks source link

using dart2native with package timezone #55

Closed thumbert closed 4 years ago

thumbert commented 4 years ago

Hi,

This program in file native_test.dart:

import 'dart:io';
import 'package:timezone/standalone.dart';
void main() async {
  await initializeTimeZone();
  var location = getLocation('America/New_York');
  print(TZDateTime.now(location));
  exit(0);
}

Runs fine with: dart native_test.dart

When I do: dart2native native_test.dart -o native_test ./native_test

I get the error:

Unhandled exception:
Unsupported operation: Service isolate is not available.
#0      initializeTimeZone.<anonymous closure> (package:timezone/standalone.dart:81)
#1      _RootZone.runUnary (dart:async/zone.dart:1381)
#2      _FutureListener.handleError (dart:async/future_impl.dart:157)
#3      Future._propagateToListeners.handleError (dart:async/future_impl.dart:692)
#4      Future._propagateToListeners (dart:async/future_impl.dart:713)
#5      Future._completeError (dart:async/future_impl.dart:532)
#6      _AsyncAwaitCompleter.completeError (dart:async-patch/async_patch.dart:38)
#7      _loadAsBytes (package:timezone/standalone.dart:0)
#8      _asyncErrorWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:80)
#9      _RootZone.runBinary (dart:async/zone.dart:1386)
#10     _FutureListener.handleError (dart:async/future_impl.dart:153)
#11     Future._propagateToListeners.handleError (dart:async/future_impl.dart:692)
#12     Future._propagateToListeners (dart:async/future_impl.dart:713)
#13     Future._completeError (dart:async/future_impl.dart:532)
#14     Future._chainForeignFuture.<anonymous closure> (dart:async/future_impl.dart:480)
#15     _microtaskLoop (dart:async/schedule_microtask.dart:43)
#16     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52)
#17     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118)
#18     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:175)

This error shows up in both Linux and Windows with Dart VM version: 2.7.1 (Unknown timestamp)

Any suggestions to remove this error and have the package available from dart2native?

Thank you very much, Tony

srawlins commented 4 years ago

I recommend using initializeTimeZones() rather than initializeTimeZone(): https://github.com/srawlins/timezone#initialization-from-dart-library

thumbert commented 4 years ago

Thank you. That solves the error!