flutter_jira_issue_collector 0.1.0 copy "flutter_jira_issue_collector: ^0.1.0" to clipboard
flutter_jira_issue_collector: ^0.1.0 copied to clipboard

Jira Issue Collector for Flutter. Fetch collector fields dynamically, show customizable forms, or submit issues programmatically in the background.

flutter_jira_issue_collector #

License: MIT Flutter pub.dev

Jira Issue Collector for Flutter -- fetch collector fields dynamically, show customizable forms, or submit issues programmatically in the background.

Features #

  • Fetches issue collector form fields dynamically from Jira (Data Center / Server)
  • Shows a customizable form UI using builder pattern (bring your own widgets)
  • Submits issues programmatically in the background without any UI
  • Prefill and hide specific fields (e.g. email, reporter name)
  • Includes default Material field renderers as opt-in fallback
  • Full-screen dialog and bottom sheet presentation modes

Getting Started #

Add the package to your pubspec.yaml:

dependencies:
  flutter_jira_issue_collector: ^0.1.0

Usage #

Setup #

import 'package:flutter_jira_issue_collector/flutter_jira_issue_collector.dart';

final collector = JiraIssueCollector(
  config: JiraCollectorConfig(
    baseUrl: 'https://jira.example.com',
    collectorId: '3e3ffaf3',
  ),
);

Background Mode (silent submission) #

Submit issues programmatically without showing any UI:

final result = await collector.submitInBackground(
  fieldValues: {
    'summary': 'Crash on login screen',
    'description': 'App crashes when tapping the login button on Android 14.',
    'email': 'user@example.com',
  },
);

if (result.success) {
  print('Issue created: ${result.issueKey}');
}

UI Mode (dynamic form) #

Open a full-screen dialog with fields fetched from the collector:

final result = await collector.showCollector(context);

UI Mode with Prefill + Hidden Fields #

Prefill fields like email and hide them from the user:

final result = await collector.showCollector(
  context,
  prefillValues: {
    'email': 'user@example.com',
    'fullname': 'John Doe',
  },
  hiddenFieldIds: {'email', 'fullname'},
);

Bottom Sheet #

final result = await collector.showCollectorBottomSheet(context);

Custom Field Rendering #

Use builders to fully control the form UI:

final result = await collector.showCollector(
  context,
  fieldBuilder: (context, field, controller, onChanged, defaultWidget) {
    if (field.id == 'description') {
      return MyCustomDescriptionField(controller: controller);
    }
    return defaultWidget; // fallback to Material widget
  },
  layoutBuilder: (context, fieldWidgets, onSubmit, isSubmitting) {
    return MyCustomFormLayout(
      fields: fieldWidgets,
      onSubmit: onSubmit,
      isSubmitting: isSubmitting,
    );
  },
);

Inspect Available Fields #

Fetch fields without showing UI -- useful for discovering field IDs:

final fields = await collector.fetchFields();
for (final field in fields) {
  print('${field.id}: ${field.label} (${field.type}, required: ${field.required})');
}

Jira Setup #

  1. In Jira, go to Administration > Issue Collectors
  2. Create or edit a collector
  3. Copy the collector ID from the embed script URL:
    .../issueCollectorBootstrap.js?collectorId=3e3ffaf3
    
  4. Use your Jira base URL and collector ID in JiraCollectorConfig

Cleanup #

collector.dispose();

License #

MIT

1
likes
160
points
32
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Jira Issue Collector for Flutter. Fetch collector fields dynamically, show customizable forms, or submit issues programmatically in the background.

Homepage
Repository (GitHub)
View/report issues

Topics

#jira #issue-collector #issue-tracking #feedback

License

MIT (license)

Dependencies

dio, flutter, html

More

Packages that depend on flutter_jira_issue_collector