Я создал свою библиотеку так:Как использовать пользовательские библиотеки Dart в Polymer?
// web/com/jessewarden/workoutlogger/workoutloggerlib.dart
library workoutloggerlib;
import 'dart:async';
import 'dart:html';
import 'package:polymer/polymer.dart';
part "types/WorkoutTypes.dart";
part "vo/Exercise.dart";
part "vo/Set.dart";
part "vo/Workout.dart";
part "views/SetView.dart";
part "views/SetView.html";
Мой SetView.dart:
part of workoutloggerlib;
@CustomTag('set-view')
class SetView extends PolymerElement
{
@published
Set set;
SetView.created() : super.created();
}
И это связано HTML:
<polymer-element name="set-vew" attributes="count">
<template>
<div>
<h3>{{set.name}}</h3>
<span class="label label-primary">Goal</span>
<div class="input-group">
<span class="input-group-addon">Reps</span>
<input type="text" class="form-control disabled" value={{set.goalReps}}>
</div>
<div class="input-group">
<span class="input-group-addon">Weight</span>
<input type="text" class="form-control" value="{{set.goalWeight}}">
<span class="input-group-addon">lbs</span>
</div>
</div>
</template>
<script type="application/dart" src="SetView.dart"></script>
</polymer-element>
Однако, в то время как она собирает, при работающем Я получаю:
'http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart': error: line 1 pos 6: url expected
part of workoutloggerlib;
^: http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart
Internal error: 'http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart': error: line 1 pos 6: url expected
part of workoutloggerlib;
^
Internal error: 'http://somelocalserver/WorkoutLogger/web/com/jessewarden/workoutlogger/views/SetView.dart': error: line 1 pos 6: url expected
part of workoutloggerlib;
^
Если я вручную импортирую классы для каждого файла, отказавшись от своей библиотеки, он отлично работает. Очевидно, это нежелательно, поскольку код не управляется таким образом, имеет более жесткие зависимости и сложнее реорганизовать.
Похоже, я должен держать мой полимер «мнения» отдельно от моего основного кода, потому что я делю тонна классов и не может дублировать импорт в каждом отдельном классе, это просто громоздко. Ник Флорос в Google+ предложил проверить здесь примеры https://github.com/sethladd/dart-polymer-dart-examples, в которых много полимерных небольших приложений, использующих библиотеки. Попытка ... – JesterXL
вы можете создать файл библиотеки, который экспортирует несколько других библиотек, например, я сделал это здесь [polymer_elements.dart] (https://github.com/ErikGrimes/polymer_elements/blob/master/lib/polymer_elements.dart) и импортируйте эту библиотеку, а не каждый, указанный внутри этого файла. –
Если я изменил верхнюю строку в SetView.html: часть workoutloggerlib; до: импортная упаковка: полимер/полимер.dart '; импорт '../workoutloggerlib.dart'; Затем он работает. Заметьте, что мне нужно импортировать файл polymer.dart, даже если он включен в мою библиотеку. Я также должен был удалить все мои классы, связанные с полимером и html, из библиотеки. Не уверен, почему мне нужно снова импортировать полимерный класс, но, по крайней мере, у всех моих файлов для полимеров Polymer теперь всего 2 импорта, и это нормально. – JesterXL