flutter_feedback_kit 0.1.2 copy "flutter_feedback_kit: ^0.1.2" to clipboard
flutter_feedback_kit: ^0.1.2 copied to clipboard

In-app user feedback for Flutter — customisable form widget, voice input, offline queue, screenshot capture, and pluggable backends (webhook, Firebase, etc.).

example/lib/main.dart

import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_feedback_kit/flutter_feedback_kit.dart';
import 'package:flutter_feedback_kit/local.dart';
import 'package:path_provider/path_provider.dart';

void main() => runApp(const ExampleApp());

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'flutter_feedback_kit example',
      home: const HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  FeedbackBackend? _backend;
  Directory? _feedbackDir;

  @override
  void initState() {
    super.initState();
    _initBackend();
  }

  Future<void> _initBackend() async {
    final docs = await getApplicationDocumentsDirectory();
    final dir = Directory('${docs.path}/feedback');
    final backend = kDebugMode
        ? LocalFeedbackBackend(directory: dir)
        : WebhookBackend(url: 'https://your-webhook-url.example.com/feedback');
    setState(() {
      _feedbackDir = dir;
      _backend = backend;
    });
  }

  @override
  void dispose() {
    _backend?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    if (_backend == null) {
      return const Scaffold(body: Center(child: CircularProgressIndicator()));
    }

    return Scaffold(
      appBar: AppBar(
        title: const Text('Feedback Kit Demo'),
        actions: [
          if (kDebugMode && _feedbackDir != null)
            IconButton(
              icon: const Icon(Icons.list_alt_outlined),
              tooltip: 'Feedback Log',
              onPressed: () => Navigator.push<void>(
                context,
                MaterialPageRoute(
                  builder: (_) =>
                      FeedbackDevViewer(directory: _feedbackDir!),
                ),
              ),
            ),
        ],
      ),
      body: const Center(child: Text('Tap the button to leave feedback')),
      floatingActionButton: FeedbackButton(
        backend: _backend!,
        appVersion: '1.0.0',
        onSuccess: () => debugPrint('[FeedbackKit] Submitted successfully'),
        onError: (e) => debugPrint('[FeedbackKit] Error: $e'),
      ),
    );
  }
}
0
likes
130
points
30
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

In-app user feedback for Flutter — customisable form widget, voice input, offline queue, screenshot capture, and pluggable backends (webhook, Firebase, etc.).

Repository (GitHub)
View/report issues

Topics

#feedback #user-feedback #widget #form #offline

License

MIT (license)

Dependencies

connectivity_plus, device_info_plus, flutter, http, image_picker, package_info_plus, permission_handler, shared_preferences, speech_to_text

More

Packages that depend on flutter_feedback_kit