Как ссылаться на другой файл в Dart?

Это может звучать как глупый вопрос, но я, честно говоря, понятия не имею, я знаю, что вы можете использоватьlibrary, import и даже#importно что правильно?

У меня есть два файла,MainClass.dart а такжеLibrary.Dartи я хочу добавить ссылку наLibrary.dart вMainClass.dart, Как я могу это сделать?

Ответы на вопрос(2)

Решение Вопроса

не используйте символ хеша перед импортом, библиотекой или чем-то еще Это старый синтаксис, который считается устаревшим. Поэтому мы больше не хотим использовать#import('...') Правильный синтаксис:

import 'some_file.dart';

Тем не менее, есть две разные вещи, которые мы можем сделать с доступом к различным исходным файлам дротика в нашем текущем файле. Во-первых, этоimport файл. Мы используем это, например, в вашем случае, когда вы хотите добавить другую библиотеку в текущий файл (или, точнее, текущую библиотеку).

Обычно, если ваши файлы находятся в одном и том же каталоге или подкаталоге текущего каталога, мы импортируем их следующим образом:

import 'lib/library.dart';

Однако, если вы используете макет пакета pub, вы также можете использовать некоторые специальные ссылки для быстрого импорта файлов (особенно из других пакетов, которые вы импортировали). Я настоятельно рекомендую прочитатьдокументы на сайте паба, так как большинство приложений и библиотек разработаны с учетом этого. В нем также есть предложения по лучшим соглашениям по именованию, таким как имена файлов в нижнем регистре, использование подчеркивания для пробелов и макеты каталогов.

Другая важная вещь, которую нужно знать о переносе файла dart в другой файл, это то, что мы можем использоватьpart а такжеpart of директивы. Это раньше называлось#source но был изменен (с удалением знака хеша), чтобы помочь с некоторой путаницей.part Директива используется, когда мы хотим написать одну библиотеку, которая охватывает несколько файлов. Скажем, например, у вас естьУдивительная библиотека, который начинает становиться немного большим для одного файла. Мы создадим основной файл библиотеки (не путать с основным методом). Этот файл обычно будет иметь то же имя, что и сама библиотека.

// awesome_library.dart
library awesome_library;

import 'dart:math';
import '...';

// this injects all the content of secret_file.dart
// into this file right here almost as if it was
// here in the first place.
part 'src/secret_file.dart';

// The rest of our file here
// ...

Директива part в основном берет все из нашего src / secret_file.dart и вставляет его в эту часть файла. Это позволяет нам разделить нашу огромнуюУдивительная библиотека в несколько небольших файлов, которые легче поддерживать. Хотя это и не требуется, полезно использоватьpart of директива в нашем secret_file.dart, чтобы помочь редактору понять, что он является «частью» библиотеки.

// secret_file.dart
part of awesome_library;

// ... Rest of our secret_file code below.

Обратите внимание, что при использовании файла детали, подобного этому, части (а) (то есть все, что не является основным файлом библиотеки) не могут импортировать или использовать объявления библиотеки сами. Они импортируют все, что импортировано в основной файл, но не могут добавить дополнительный импорт.

Для получения дополнительной информации о библиотеке см. Эту ссылку.

вы будете импортироватьfilename.dart а не название вашей библиотеки. Так что, если имя вашей библиотеки:myLib и это сохраняется в файле:someDartFile.dart тебе придется

import 'someDartFile.dart';

Если у вас в Windows есть библиотека по адресу: K: \ SomeDir \ someFile.dart, вам нужно написать:

import '/K:/SomeDir/someFile.dart';

пример:

import 'LibraryFile.dart'; //importing myLib

void main(){ 
  //a class from myLib in the LibraryFile.dart file
  var some = new SomeClassFromMyLibrary(); 
}

myLib в LibraryFile.dart:

library myLibrary;
import 'dart:math';

class SomeClassFromMyLibrary{
  String _str = "this is some private String only to myLibrary";
  String pubStr = "created instances of this class can access";
}

Вот полный пример.

//TestLib.dart
import 'LibFile.dart'; //SomeLibrary

void main() {
  print("Hello, World!");

  LibFile l = new LibFile();
  print(l.publicString);//public
  print(l.getPrivateString);//private  
  print(l.getMagicNumber); //42
}

//LibFile.dart
library SomeLibrary;
part 'LibFile2.dart';

class LibFile {
  String _privateString = "private";
  String publicString = "public";

  String get getPrivateString => _privateString;

  int get getMagicNumber => new LibFile2().number;
}

//LibFile2.dart
part of SomeLibrary;

class LibFile2 {
  int number = 42;
}
 Steoates18 окт. 2012 г., 13:08
Круто, спасибо за ответ! :)
 Chris Buckett19 окт. 2012 г., 12:04
Просто чтобы подтвердить - это только библиотека, если у вас есть определение «библиотека» вверху. Скрипт может иметь функцию main () и не быть библиотекой.
 Gero18 окт. 2012 г., 13:00
Как я помню, в дартсе есть все, что есть библиотека. Даже ваше приложение с main (). Но я помню те же мысли, что и ты :). Зачем мне нужна библиотека, если я просто хочу создать объект из другого класса / файла. Но это работает.
 Steoates18 окт. 2012 г., 12:46
Что, если у вас нет библиотеки, а только новый файл Dart с классами, это все равно будет работать?

Ваш ответ на вопрос