rapide_ticket 2.1.3 copy "rapide_ticket: ^2.1.3" to clipboard
rapide_ticket: ^2.1.3 copied to clipboard

Rapide Ticket — in-app bug reporting for Flutter (Jira, screenshots, GIF).

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:rapide_ticket/rapide_ticket.dart';

/// Set your project ID here. Leave empty or invalid to see the configuration error screen.
/// Demo ID: fad_e9f82dfd59d412f1464dd7845c332602
const String kProjectId = 'fad_139d176ff3206ec18856002eec861d17';

void main() {
  runApp(const ExampleApp());
}

class ExampleApp extends StatelessWidget {
  const ExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    final configError = RapideTicketSettings.projectIdValidationMessage(
      kProjectId,
    );

    if (configError != null) {
      return MaterialApp(
        title: 'Rapide Ticket example',
        debugShowCheckedModeBanner: false,
        home: Scaffold(
          body: SafeArea(
            child: RapideTicketConfigurationError(
              title: 'Invalid project ID',
              message: configError,
            ),
          ),
        ),
      );
    }

    return RapideTicketHosts(
      settings: RapideTicketSettings.simple(projectId: kProjectId),
      child: MaterialApp(
        title: 'Rapide Ticket example',
        debugShowCheckedModeBanner: false,
        builder: RapideTicket.materialAppBuilder,
        home: const HomePage(),
      ),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Rapide Ticket example')),
      body: ListView(
        padding: const EdgeInsets.all(20),
        children: [
          Center(
            child: ElevatedButton(
              onPressed: () => RapideTicket.showFeedback(context),
              child: const Text('Open feedback'),
            ),
          ),
        ],
      ),
    );
  }
}