snapfeed 0.1.0+1

  • Readme
  • Changelog
  • Example
  • Installing
  • 91

Snapfeed Logo

Snapfeed Beta #

Pub Build Website

Hey there and thanks for checking out the Snapfeed Beta 🎉 Snapfeed is probably the easiest and most convenient way to capture in-app user feedback, wishes, ratings and much more. The SDK is completely written in Dart and runs on Android, iOS, Desktop and the Web. For more info, head over to snapfeed.dev.

Getting Started #

In order to get started, you need to create an account at snapfeed.dev - you do this by simply signing in with a valid Google account.

Creating a new project #

Step 1

After signing in you should land on the projects screen where you can find all your current Snapfeed projects. Click on Create new project and choose a name for it. Be creative. You can use whatever name you want 🦄

Now your new project has been created! On the Settings page you will find your API credentials, namely the project id and secret. You will need to provide those for configuring the SDK.

Step2

Setting up your Flutter project #

After successfully creating a new project in the Snapfeed admin console it's time to add Snapfeed to your app. Simply open your pubspec.yaml file and add the current version of Snapfeed as a dependency, e.g. snapfeed: 0.1.0. Make sure to get the newest version.

Now get all pub packages by clicking on Packages get in your IDE or executing flutter packages get inside your Flutter project.

Head over to the main entry point of your app which most likely resides inside main.dart. In here wrap your root widget inside a Snapfeed widget and provide your API credentials as parameters. That was already the hard part 🙌

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Snapfeed(
      projectId: "YOUR-PROJECT-ID",
      secret: "YOUR-SECRET",
      child: MaterialApp(
        title: 'Flutter Demo',
        home: ...
      ),
    );
  }  
}

Now you can call Snapfeed.of(context).startFeedback() from anywhere inside your app to start the feedback process!

Android / iOS specific setup #

Snapfeed is by design written in Dart and thus does not have any native dependencies. However, when running on Android it needs the internet permission (for sending user feedback back to you). If you already use Flutter in production, chances are quite high that you already added the internet permission to the manifest - if not, add the following line to the AndroidManifest.xml in your Android project folder:

<manifest ...>
 <uses-permission android:name="android.permission.INTERNET" />
 <application ...
</manifest>

That's it!

License #

Snapfeed is released under the Attribution Assurance License. See LICENSE for details.

[0.1.0] - Private Beta #

  • Private Beta testing is here 🎉

example/lib/main.dart

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: Replace with your own API credentials
    return Snapfeed(
      projectId: "YOUR-PROJECT-ID",
      secret: "YOUR-SECRET",
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: MyHomePage(title: 'Snapfeed Demo Home Page'),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
        actions: <Widget>[
          IconButton(
            icon: Icon(Icons.help_outline),
            onPressed: () => Snapfeed.of(context).startFeedback(),
          )
        ],
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.display1,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  snapfeed: ^0.1.0+1

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:snapfeed/snapfeed.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
83
Health:
Code health derived from static analysis. [more]
99
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
91
Learn more about scoring.

We analyzed this package on Mar 27, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6
  • Flutter: 1.12.13+hotfix.8

Health suggestions

Fix lib/src/snapfeed_widget.dart. (-1 points)

Analysis of lib/src/snapfeed_widget.dart reported 2 hints:

line 59 col 17: 'ancestorStateOfType' is deprecated and shouldn't be used. Use findAncestorStateOfType instead. This feature was deprecated after v1.12.1..

line 59 col 43: 'TypeMatcher' is deprecated and shouldn't be used. TypeMatcher has been deprecated because it is no longer used in framework(only in deprecated methods). This feature was deprecated after v1.12.1..

Fix lib/src/common/config/config_container.dart. (-0.50 points)

Analysis of lib/src/common/config/config_container.dart reported 1 hint:

line 22 col 15: 'inheritFromWidgetOfExactType' is deprecated and shouldn't be used. Use dependOnInheritedWidgetOfExactType instead. This feature was deprecated after v1.12.1..

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.5.0 <3.0.0
flutter 0.0.0
http ^0.12.0 0.12.0+4
http_parser ^3.1.0 3.1.4
Transitive dependencies
async 2.4.1
charcode 1.1.3
collection 1.14.11 1.14.12
meta 1.1.8
path 1.6.4
pedantic 1.9.0
sky_engine 0.0.99
source_span 1.7.0
string_scanner 1.0.5
term_glyph 1.1.0
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
flutter_test
lint ^0.3.0