Первый пакет pub.dev: Руководство для начинающих

Первый пакет pub.dev: Руководство для начинающих

FlutterPulse

Эта статья переведена специально для канала FlutterPulse. В этом канале вы найдёте много интересных вещей, связанных с Flutter. Не забывайте подписываться! 🚀

Первый пакет на pub.dev: Руководство для начинающих

Хотите опубликовать пакет на pub.dev? Во время разработки приложения вы можете понять, что определенный шаблон проектирования может быть полезен в качестве переиспользуемого пакета, а не для создания его заново для каждого проекта. Если так, вы попали по адресу. Давайте разберемся.

Что такое Pub.dev:

Это официальный репозиторий пакетов для Dart и Flutter. Google поддерживает его и предоставляет его как открытую платформу, где разработчики могут публиковать и получать доступ к пакетам.

Самые используемые пакеты:

  1. shared_preferences
  2. firebase_auth
  3. google_sign_in
  4. url_launcher
  5. cloud_firestore
  6. jiffy

Ключевые особенности:

Открытый исходный код — Поддержка Google

Управляемое сообществом — Разработчики со всего мира вносят свой вклад в эту платформу

Стандартная лицензия — Она попадает под лицензию BSD 3-Clause License.

Оценка качества — Pubdev сам предоставляет оценку качества вашего кода и документации, и масштабирует ваш продукт

Безупречная интеграция — Без проблем вы можете интегрировать с вашими dart/flutter приложениями.

Теперь давайте создадим пакет в Flutter

Вот правильный синтаксис для создания пакета Flutter:

flutter create --template=package package_name

Затем нам нужно настроить pubspec.yaml, эта страница в основном используется для представления зависимостей, имени пакета, вашей первой версии пакета и URL домашней страницы (исходный репозиторий на github)

name: gradient_textfield
description: A new Flutter package project which helps the developer to ease the custom textfields
version: 0.0.1
homepage: https://github.com/naveeramesh/custom_textfield

Организуйте свою базу кода, чтобы включить файлы README, LICENSE и CHANGELOG.md.

Лицензия может быть "BSD-3 Clause license", использование этой конкретной лицензии является полностью необязательным, вы можете использовать любую лицензию, которую предпочитаете для вашего пакета.

Разработка кода:

Следующий важный шаг — разработка вашего кода в папке lib. Убедитесь, что ваш код соответствует хорошим практикам (переиспользование кода, хорошая документация).

Пример кода:

import 'package:flutter/material.dart';
class Gradienttextfield extends StatefulWidget {
  Gradienttextfield(
      {Key? key,
      required this.height,
      required this.width,
      required this.colors,
      required this.text,
      this.radius,
     required this.controller,
      this.fontColor,
      this.fontWeight,
      this.fontSize})
      : super(key: key);
  double? height;
  double? width;
  List<Color> colors;
  String? text;
  double? radius;
  TextEditingController? controller;
  Color? fontColor;
  FontWeight? fontWeight;
  double? fontSize;
  @override
  _GradienttextfieldState createState() => _GradienttextfieldState();
}
class _GradienttextfieldState extends State<Gradienttextfield> {

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.only(left: 20.0, right: 20),
      child: Container(
        height: widget.height,
        width: widget.width,
        decoration: BoxDecoration(
            gradient: LinearGradient(
              colors: widget.colors,
            ),
            borderRadius: BorderRadius.circular(widget.radius ?? 20.0)),
        child: TextField(
          controller: widget.controller,
          decoration: InputDecoration(
              hintText: widget.text,
              hintStyle: TextStyle(
                  color: widget.fontColor ?? Colors.black,
                  fontSize: widget.fontSize ?? 18,
                  fontWeight: widget.fontWeight ?? FontWeight.bold),
              enabledBorder: const OutlineInputBorder(
                  borderSide: BorderSide(color: Colors.transparent)),
              focusedBorder: const OutlineInputBorder(
                  borderSide: BorderSide(color: Colors.transparent))),
        ),
      ),
    );
  }
}

Этот код показывает Stateless Widget для Flutter для экрана входа/регистрации, который использует пользовательский виджет Gradienttextfield.

Виджет — это StatelessWidget с именем Login, который создает Scaffold

  • Внутри метода build создается TextEditingController для поля email
  • Основной элемент интерфейса — это текстовое поле с градиентом со следующими свойствами:

radius: 40 (скругление границ)

height: 60, width: 400 (размеры)

colors: градиент от серого к белому

text: "Email" (заполнитель/метка)

стиль шрифта: черный цвет, размер 15, обычный вес

Код, похоже, является частью более крупной формы или интерфейса входа, показывая только реализацию поля ввода email.

После завершения разработки пришло время документировать пакет убедитесь, что вы включили эти обязательные файлы перед публикацией:

README

LICENSE

CHANGELOG.md

Github:

Создайте публичный репозиторий на GitHub и загрузите туда свой код. Вы можете настроить README вашего репозитория, чтобы эффективно представить ваш пакет.

Что дальше:

После завершения вашего кода сосредоточьтесь на README и включите эти важные детали:

  1. Краткое описание пакета
  2. Способ установки
  3. Пример кода
  4. Вывод вашего пакета
  5. Предстоящие релизы

Структура:

Опубликовать:

Выполните эту команду в терминале

dart pub publish --dry-run

Эта команда проверяет наличие предупреждений перед публикацией.

Publishing gradient_textfield 1.0.0
.gitignore CHANGELOG.md
lib
src
gradienttextfield.dart gradienttextfield.dart
pubspec.yaml Package has 0 warnings.

Затем выполните:

dart pub publish

При первом выполнении этой команды вам нужно будет аутентифицировать свой аккаунт Google в pub.dev. Просто скопируйте URL из терминала и вставьте его в браузер для аутентификации. После завершения ваш пакет будет опубликован.

После публикации вы получите подтверждающее письмо, и пакет появится в вашей панели управления.

Заключение:

Публикация пакета — это увлекательный этап в вашем пути разработки на Flutter. Это позволяет вам внести вклад в сообщество разработчиков, создавая повторно используемые, хорошо документированные решения. Следуя рекомендациям, указанным в этом блоге, вы можете обеспечить плавный процесс публикации, от структурирования вашего пакета до аутентификации вашего аккаунта.

Помните, что хорошее README, четкая документация и чистый код являются ключевыми для успешного пакета. Продолжайте итеративно улучшать свой пакет на основе обратной связи сообщества и обновляйте его новыми функциями или улучшениями. Счастливого кодинга!

Report Page