Я знаю, що ти можеш використовувати library
, import
і навіть #import
, але що правильно?
У мене є два файли, MainClass.dart
і Library.Dart
, і я хочу додати посилання на Library.dart
в MainClass.dart
. Як я можу це зробити?
Відповіді:
По-перше, дозвольте мені просто вступити до цього, сказавши, будь ласка, не використовуйте хеш-символ перед імпортом, бібліотекою чи будь-чим іншим. Це старий синтаксис, який не підтримується. Тому ми більше не хочемо використовувати #import('...')
правильний синтаксис:
import 'some_file.dart';
Тим не менш, ми можемо зробити дві різні речі, щоб отримати доступ до різних вихідних файлів дротиків у нашому поточному файлі. Перший - до import
файлу. Ми використовуємо це, як у вашому випадку, коли ви хочете додати іншу бібліотеку до поточного файлу (або точніше поточну бібліотеку).
Зазвичай, якщо ваші файли знаходяться в одному каталозі або підкаталозі поточного, ми імпортуємо їх таким чином:
import 'lib/library.dart';
Однак якщо ви використовуєте макет пакунку pub, ви також можете використовувати деякі спеціальні ярлики, а також імпортувати файли (особливо з інших пакунків, які ви імпортували). Я настійно рекомендую ознайомитися з документами на сайті пабу , оскільки більшість програм та бібліотек розроблені з урахуванням цього. У ньому також є пропозиції щодо найкращих правил іменування, таких як імена файлів у всіх нижчих регістах, використання підкреслення для пробілів та макетів каталогів.
Інша важлива річ, яку слід знати про перенесення файлу дротиків в інший файл, - це те, що ми можемо використовувати директиви part
and part of
. Раніше це називалося, #source
але його було змінено (із видаленням символу хешу), щоб зменшити плутанину. part
Директива використовується , коли ми хочемо написати єдину бібліотеку , яка охоплює кілька файлів. Скажімо, наприклад, у вас є Awesome Library , яка починає трохи збільшуватися для одного файлу. Ми створимо основний файл бібліотеки (не плутати з основним методом). Цей файл зазвичай матиме те саме ім'я, що і сама бібліотека.
// 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 і вставляє в цю частину файлу. Це дозволяє нам розділити нашу величезну Awesome Library на кілька менших файлів, які простіше в обслуговуванні. Хоча це спеціально не потрібно, корисно використовувати part of
директиву в нашому секретному_файлі.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;
}
Хоча я відповідаю дуже пізно, але відповідь може допомогти новому розробнику.
Завжди використовуйте файл pubspec.yaml у своєму дартс-пакеті (програмі / бібліотеці).
Після запуску команди pub get вона додасть вашу локальну бібліотеку до списку залежностей у файлі .packages.
Подумайте, у мене є така структура проекту.
Для посилання на зміст привітання.dart у моєму файлі main.dart я повинен додати бібліотеку, як показано нижче
import 'package:my_project_name/greeting.dart'
Після імпортування ми можемо використовувати вміст файлу привітання.dart у нашому файлі main.dart. Примітка: ми не використовували фактичний шлях, оскільки ви бачите, що каталог 'lib' відсутній.
Спочатку переконайтеся, що це ім’я, яке ви згадали, pubspec.yaml
і файл, який ви хочете імпортувати, мають однакове ім’я
приклад:
pubspec.yaml
name: flutter_wordpress_app
description: flutter wordpress app
...
....
// dirOne/dirTwo/greeting.dart
class FavArticleBloc {
// Your code goes here
}
import 'package:flutter_wordpress_app/dirOne/dirTwo/greeting.dart'
void main(){
var some = new FavArticleBloc();
}
Але в цьому main.dart
не потрібно вказувати,
import 'package:flutter_wordpress_app
просто робіть, як показано нижче
import 'dirOne/dirTwo/greeting.dart