Sentry SDK for Dart and Flutter

Overview


Bad software is everywhere, and we're tired of it. Sentry is on a mission to help developers write better software faster, so we can get back to enjoying technology. If you want to join us Check out our open positions

Sentry SDK for Dart and Flutter

codecov

package build pub likes popularity pub points
sentry build pub package likes popularity pub points
sentry_flutter build pub package likes popularity pub points
Usage

For detailed usage, check out the inner dart and flutter README's or our Resources section below.

Blog posts

With Flutter and Sentry, You Can Put All Your Eggs in One Repo.

A Sanity Listicle for Mobile Developers.

Supporting Native Android Libraries Loaded From APKs.

Resources

  • Flutter docs
  • Dart docs
  • Forum
  • Discord Chat
  • Stack Overflow
  • Twitter Follow
Comments
  • Sentry.configureScope not synchronize in native

    Sentry.configureScope not synchronize in native

    sentry_flutter: ^4.0.0-alpha.2

    Sentry.configureScope((Scope scope) async {
        scope.user = User(id: xxx);
    });
    

    The user information was set in the flutter and did not synchronize in native(Android).

    Hope to add this feature, thanks

    enhancement flutter Impact: Large Effort: Medium Platform: Dart 
    opened by nEdAy 37
  • Ensure WidgetsFlutterBinding.ensureInitialized() is called within the runZonedGuarded created by the RunZonedGuardedIntegration

    Ensure WidgetsFlutterBinding.ensureInitialized() is called within the runZonedGuarded created by the RunZonedGuardedIntegration

    Thanks for this newly developed package sentry_flutter! However, I see that some exceptions are not caught...

    Platform:

    • [x] Dart
    • [x] Flutter Android or iOS
    • [ ] Flutter Web

    IDE:

    • [ ] VSCode
    • [x] IntelliJ/AS
    • [ ] XCode
    • [ ] Other, which one?

    split-debug-info and obfuscate (Flutter Android or iOS) or CanvasKit (Flutter Web):

    • [ ] Enabled
    • [x] Disabled

    Platform installed with:

    • [x] pub.dev
    • [ ] GitHub

    Output of the command flutter doctor -v below:

    [✓] Flutter (Channel stable, 1.22.5, on Mac OS X 10.15.7 19H2 darwin-x64, locale zh-Hans-CN)
        • Flutter version 1.22.5 at /Users/tom/opt/flutter
        • Framework revision 7891006299 (4 weeks ago), 2020-12-10 11:54:40 -0800
        • Engine revision ae90085a84
        • Dart version 2.10.4
        • Pub download mirror https://pub.flutter-io.cn
        • Flutter download mirror https://storage.flutter-io.cn
    
     
    [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
        • Android SDK at /Users/tom/Library/Android/sdk
        • Platform android-30, build-tools 29.0.3
        • ANDROID_SDK_ROOT = /Users/tom/Library/Android/sdk
        • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 12.3)
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Xcode 12.3, Build version 12C33
        • CocoaPods version 1.10.0
    
    [✓] Android Studio (version 3.6)
        • Android Studio at /Applications/Android Studio.app/Contents
        • Flutter plugin version 48.1.1
        • Dart plugin version 192.8052
        • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
    
    [!] IntelliJ IDEA Ultimate Edition (version 2020.3)
        • IntelliJ at /Users/tom/Applications/JetBrains Toolbox/IntelliJ IDEA Ultimate.app
        ✗ Flutter plugin not installed; this adds Flutter specific functionality.
        ✗ Dart plugin not installed; this adds Dart specific functionality.
        • For information about installing plugins, see
          https://flutter.dev/intellij-setup/#installing-the-plugins
    
    [✓] VS Code (version 1.52.1)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.18.0
    
    [✓] Proxy Configuration
        • HTTP_PROXY is set
        • NO_PROXY is 127.0.0.1,localhost
        • NO_PROXY contains 127.0.0.1
        • NO_PROXY contains localhost
    
    [✓] Connected device (2 available)
        • JSN AL00a (mobile)                  • 7XBNW19215005473                     • android-arm64 • Android 10 (API
          29)
        • iPhone SE (2nd generation) (mobile) • 41640072-3F6C-45F1-A766-86FFCF6BD773 • ios           •
          com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
        ! Error: iPhone has recently restarted. Xcode will continue when iPhone is unlocked. (code -14)
    

    The version of the SDK (See pubspec.lock): 4.0.1


    I have the following issue:

    The description goes here ...

    Steps to reproduce: Add the following lines into the flutter/example/lib/main.dart. (Actually only 1 core line)

                RaisedButton(
                  child: const Text('Throws in Future.delayed'),
                  onPressed: () =>
                      Future.delayed(Duration(milliseconds: 100), () => throw Exception('Throws in Future.delayed')), // <-- THIS IS THE CRUCIAL LINE!
                ),
                RaisedButton(
                  child: const Text('Throws in Future.then'),
                  onPressed: () =>
                      Future.delayed(Duration(milliseconds: 100)).then((_) => throw Exception('Throws in Future.then')),
                ),
    

    Then press it.

    Actual result: The exception is not caught. This is confirmed by: (1) From the console we see it is "unhandled" exception. (2) not see from Sentry webpage, while other exceptions are happily seen.

    Example log:

    Restarted application in 713ms.
    flutter: [debug] release: [email protected]+3
    [VERBOSE-2:ui_dart_state.cc(177)] Unhandled Exception: Exception: Throws in Future.delayed
    #0      MainScaffold.build.<anonymous closure>.<anonymous closure> (package:sentry_flutter_example/main.dart:64:69)
    #1      new Future.delayed.<anonymous closure> (dart:async/future.dart:326:39)
    #2      _rootRun (dart:async/zone.dart:1182:47)
    #3      _CustomZone.run (dart:async/zone.dart:1093:19)
    #4      _CustomZone.runGuarded (dart:async/zone.dart:997:7)
    #5      _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
    #6      _rootRun (dart:async/zone.dart:1190:13)
    #7      _CustomZone.run (dart:async/zone.dart:1093:19)
    #8      _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:1021:23)
    #9      Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15)
    #10     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:397:19)
    #11     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:428:5)
    #12     _RawReceivePortImpl._handleMessage (dart:isolate<…>
    
    (and for the Future.then case:)
    
    [VERBOSE-2:ui_dart_state.cc(177)] Unhandled Exception: Exception: Throws in Future.then
    #0      MainScaffold.build.<anonymous closure>.<anonymous closure> (package:sentry_flutter_example/main.dart:69:75)
    #1      _rootRunUnary (dart:async/zone.dart:1198:47)
    #2      _CustomZone.runUnary (dart:async/zone.dart:1100:19)
    #3      _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
    #4      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
    #5      Future._propagateToListeners (dart:async/future_impl.dart:725:32)
    #6      Future._complete (dart:async/future_impl.dart:519:7)
    #7      new Future.delayed.<anonymous closure> (dart:async/future.dart:323:16)
    #8      _rootRun (dart:async/zone.dart:1182:47)
    #9      _CustomZone.run (dart:async/zone.dart:1093:19)
    #10     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
    #11     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
    #12     _rootRun (dart:async/zone.dart:1190:13)
    #13     _Custom<…>
    

    Expected result: The exception should be caught.

    bug flutter 
    opened by fzyzcjy 32
  • Feature: Improve Dio exception reports

    Feature: Improve Dio exception reports

    :scroll: Description

    Adds an event processor, which add chained exceptions for the inner exception of DioError, see https://sentry.io/share/issue/638a3758a43d4f61bc2a0c62acdefd69/

    This one should be merged after https://github.com/getsentry/sentry-dart/pull/728

    :bulb: Motivation and Context

    Fixes https://github.com/getsentry/sentry-dart/issues/715

    :green_heart: How did you test it?

    :pencil: Checklist

    • [x] I reviewed submitted code
    • [x] I added tests to verify changes
    • [x] I updated the docs if needed
    • [x] All tests passing
    • [ ] No breaking changes

    :crystal_ball: Next steps

    opened by ueman 30
  • Implement envelope based transport

    Implement envelope based transport

    :scroll: Description

    • Implemented envelope based transport of events.

    Open Questions

    • [x] Can we remove file based envelope transport? -> No
    • [x] Should hints be implemented as well? -> Later
    • [x] Do we need to update interface of hubs? -> No

    :bulb: Motivation and Context

    With envelopes, we can implement features like feedback and attachments.

    Closes #344

    :green_heart: How did you test it?

    :pencil: Checklist

    • [x] I reviewed submitted code
    • [x] I added tests to verify changes
    • [ ] I updated the docs if needed
    • [x] All tests passing
    • [ ] No breaking changes

    :crystal_ball: Next steps

    • Update accordingly when open questions are answered...
    6.0.0 
    opened by denrase 29
  • Dart sdk missing full (absolute) file path to define ownership rules

    Dart sdk missing full (absolute) file path to define ownership rules

    Platform:

    • [ ] Dart
    • [x] Flutter Android or iOS
    • [ ] Flutter Web

    IDE:

    • [ ] VSCode
    • [x] IntelliJ/AS
    • [ ] XCode
    • [ ] Other, which one?

    split-debug-info and obfuscate (Flutter Android or iOS) or CanvasKit (Flutter Web):

    • [ ] Enabled
    • [ ] Disabled

    Platform installed with:

    • [x] pub.dev
    • [ ] GitHub

    Output of the command flutter doctor -v below:

    [✓] Flutter (Channel unknown, 1.22.5, on Mac OS X 10.15.7 19H524 darwin-x64, locale en) • Flutter version 1.22.5 at /Users/lukelee/fvm/versions/1.22.5 • Framework revision 7891006299 (3 months ago), 2020-12-10 11:54:40 -0800 • Engine revision ae90085a84 • Dart version 2.10.4

    [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0-rc1) • Android SDK at /Users/lukelee/Library/Android/sdk • Platform android-30, build-tools 30.0.0-rc1 • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211) • All Android licenses accepted.

    [✓] Xcode - develop for iOS and macOS (Xcode 12.4) • Xcode at /Applications/Xcode.app/Contents/Developer • Xcode 12.4, Build version 12D4e • CocoaPods version 1.10.0

    [✓] Android Studio (version 3.6) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin version 45.1.1 • Dart plugin version 192.8052 • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

    [✓] Connected device (2 available) • Android SDK built for x86 64 (mobile) • emulator-5554 • android-x64 • Android 10 (API 29) (emulator) • macOS (desktop) • macos • darwin-x64 • Mac OS X 10.15.7 19H524 darwin-x64

    • No issues found! The version of the SDK (See pubspec.lock): 4.0.4


    I have the following issue:

    Dart sdk is missing a full (absolute) file path to define ownership rules. The data is included in JSON files as abs_filepath but the path is not popping up in the ownership rules section.

    Steps to reproduce:

    • Step 1: trigger an exception in a flutter app.
    • Step 2: go to sentry and find the exception you triggered.
    • Step 3: click Create Ownership Rule on the right panel.
    • Step 4: the full absolute file path is not popping up so you can't utilize the ownership rule feature to define the paths to assign to a specific team.
    Screen Shot 2021-03-10 at 1 24 23 PM

    Actual result: When we use flutter sdk, we don't get the full path.

    • Actual
    Screen Shot 2021-03-03 at 3 51 43 PM

    Expected result: When we log to Android SDK via method channel, we get this full path.

    • Result
    Screen Shot 2021-03-10 at 1 11 08 PM enhancement Impact: Large Effort: Small Platform: Dart 
    opened by lukesterlee 29
  • With Flutter 2.5, sentry-cli cannot be used - it thinks there is no debug information files when build with split-debug-info

    With Flutter 2.5, sentry-cli cannot be used - it thinks there is no debug information files when build with split-debug-info

    Platform:

    • [ ] Dart
    • [x] Flutter Android or iOS
    • [ ] Flutter Web

    IDE:

    • [ ] VSCode
    • [x] IntelliJ/AS
    • [ ] XCode
    • [ ] Other, which one?

    split-debug-info and obfuscate (Flutter Android or iOS) or CanvasKit (Flutter Web):

    • [x] Enabled
    • [ ] Disabled

    Platform installed with:

    • [x] pub.dev
    • [ ] GitHub

    Output of the command flutter doctor -v below:

    [✓] Flutter (Channel stable, 2.5.0, on Mac OS X 10.15.7 19H1323 darwin-x64, locale zh-Hans-CN)
        • Flutter version 2.5.0 at /Users/tom/opt/flutter
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision 4cc385b4b8 (10 天前), 2021-09-07 23:01:49 -0700
        • Engine revision f0826da7ef
        • Dart version 2.14.0
        • Pub download mirror https://pub.flutter-io.cn
        • Flutter download mirror https://storage.flutter-io.cn
    
    [!] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
        • Android SDK at /Users/tom/Library/Android/sdk
        ✗ cmdline-tools component is missing
          Run `path/to/sdkmanager --install "cmdline-tools;latest"`
          See https://developer.android.com/studio/command-line for more details.
        ✗ Android license status unknown.
          Run `flutter doctor --android-licenses` to accept the SDK licenses.
          See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
    
    [✓] Xcode - develop for iOS and macOS
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Xcode 12.4, Build version 12D4e
        • CocoaPods version 1.10.0
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 4.2)
        • Android Studio at /Users/tom/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/202.7486908/Android
          Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    
    [✓] IntelliJ IDEA Ultimate Edition (version 2021.1.3)
        • IntelliJ at /Users/tom/Applications/JetBrains Toolbox/IntelliJ IDEA Ultimate.app
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
    
    [✓] VS Code (version 1.60.1)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.26.0
    
    [✓] Connected device (3 available)
        • M2104K10AC (mobile) • zdfueipf99t4hmpn                     • android-arm64  • Android 11 (API 30)
        • iPhone 8 (mobile)   • 2B6C1189-40D3-4E60-898F-2A5E58ACAA3D • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-4
          (simulator)
        • Chrome (web)        • chrome                               • web-javascript • Google Chrome 93.0.4577.82
    
    ! Doctor found issues in 1 category.
    

    The version of the SDK (See pubspec.lock):

      sentry:
        dependency: "direct main"
        description:
          name: sentry
          url: "https://pub.flutter-io.cn"
        source: hosted
        version: "5.0.0"
      sentry_flutter:
        dependency: "direct main"
        description:
          name: sentry_flutter
          url: "https://pub.flutter-io.cn"
        source: hosted
        version: "5.0.0"
    

    I have the following issue:

    Hi thanks for the lib! However, sentry-cli thinks there is no debug information files when build with split-debug-info in flutter 2.5.

    Steps to reproduce:

    • flutter clean
    • flutter build apk --split-per-abi --obfuscate --split-debug-info myfolder --release --verbose
    • /usr/local/bin/sentry-cli upload-dif --org rzzsdxx --project rzzsdxx --log-level=debug myfolder

    Actual result:

    No files are uploaded!

      INFO    2021-09-18 11:46:44.425159 +08:00 Loaded config from /Users/tom/.sentryclirc
      DEBUG   2021-09-18 11:46:44.426030 +08:00 sentry-cli version: 1.63.1, platform: "darwin", architecture: "x86_64"
      INFO    2021-09-18 11:46:44.426059 +08:00 sentry-cli was invoked with the following command line: "/usr/local/bin/sentry-cli" "upload-dif" "--org" "rzzsdxx" "--project" "rzzsdxx" "--log-level=debug" "/Users/tom/QAPMain/Development/frontend/yplusplus/build/split-debug-info/"
      INFO    2021-09-18 11:46:44.427068 +08:00 Issuing a command for Organization: rzzsdxx Project: rzzsdxx
      DEBUG   2021-09-18 11:46:44.428406 +08:00 request GET https://sentry.io/api/0/organizations/rzzsdxx/chunk-upload/
      DEBUG   2021-09-18 11:46:44.428683 +08:00 using token authentication
      DEBUG   2021-09-18 11:46:44.428702 +08:00 retry number 0, max retries: 0
      DEBUG   2021-09-18 11:46:45.410247 +08:00 > GET /api/0/organizations/rzzsdxx/chunk-upload/ HTTP/1.1
      DEBUG   2021-09-18 11:46:45.410272 +08:00 > Host: sentry.io
      DEBUG   2021-09-18 11:46:45.410277 +08:00 > Accept: */*
      DEBUG   2021-09-18 11:46:45.410281 +08:00 > Connection: TE
      DEBUG   2021-09-18 11:46:45.410284 +08:00 > TE: gzip
      DEBUG   2021-09-18 11:46:45.410288 +08:00 > User-Agent: sentry-cli/1.63.1
      DEBUG   2021-09-18 11:46:45.410684 +08:00 > Authorization: Bearer 3d29e651***
      DEBUG   2021-09-18 11:46:45.669344 +08:00 < HTTP/1.1 200 OK
      DEBUG   2021-09-18 11:46:45.669385 +08:00 < Server: nginx
      DEBUG   2021-09-18 11:46:45.669398 +08:00 < Date: Sat, 18 Sep 2021 03:46:45 GMT
      DEBUG   2021-09-18 11:46:45.669414 +08:00 < Content-Type: application/json
      DEBUG   2021-09-18 11:46:45.669438 +08:00 < Content-Length: 297
      DEBUG   2021-09-18 11:46:45.669449 +08:00 < Connection: keep-alive
      DEBUG   2021-09-18 11:46:45.669457 +08:00 < allow: GET, POST, HEAD, OPTIONS
      DEBUG   2021-09-18 11:46:45.669466 +08:00 < access-control-allow-methods: GET, POST, HEAD, OPTIONS
      DEBUG   2021-09-18 11:46:45.669484 +08:00 < access-control-allow-headers: X-Sentry-Auth, X-Requested-With, Origin, Accept, Content-Type, Authentication, Authorization, Content-Encoding
      DEBUG   2021-09-18 11:46:45.669495 +08:00 < access-control-expose-headers: X-Sentry-Error, Retry-After
      DEBUG   2021-09-18 11:46:45.669504 +08:00 < access-control-allow-origin: *
      DEBUG   2021-09-18 11:46:45.669512 +08:00 < vary: Accept-Language, Cookie
      DEBUG   2021-09-18 11:46:45.669521 +08:00 < content-language: en
      DEBUG   2021-09-18 11:46:45.669529 +08:00 < x-frame-options: deny
      DEBUG   2021-09-18 11:46:45.669537 +08:00 < x-content-type-options: nosniff
      DEBUG   2021-09-18 11:46:45.669545 +08:00 < x-xss-protection: 1; mode=block
      DEBUG   2021-09-18 11:46:45.669553 +08:00 < x-envoy-attempt-count: 1
      DEBUG   2021-09-18 11:46:45.669562 +08:00 < x-envoy-upstream-service-time: 34
      DEBUG   2021-09-18 11:46:45.669570 +08:00 < x-served-by: getsentry-web-default-production-79f56bf547-tg6zq
      DEBUG   2021-09-18 11:46:45.669590 +08:00 < x-served-by: lb-8
      DEBUG   2021-09-18 11:46:45.669598 +08:00 < Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
      DEBUG   2021-09-18 11:46:45.669629 +08:00 response status: 200
      DEBUG   2021-09-18 11:46:45.669647 +08:00 body: {"url":"https://sentry.io/api/0/organizations/rzzsdxx/chunk-upload/","chunkSize":8388608,"chunksPerRequest":64,"maxFileSize":2147483648,"maxRequestSize":33554432,"concurrency":8,"hashAlgorithm":"sha1","compression":["gzip"],"accept":["debug_files","release_files","pdbs","sources","bcsymbolmaps"]}
      DEBUG   2021-09-18 11:46:45.673374 +08:00 searching location /Users/tom/QAPMain/Development/frontend/yplusplus/build/split-debug-info/
      DEBUG   2021-09-18 11:46:45.674936 +08:00 trying to parse dif app.android-x64.symbols
      DEBUG   2021-09-18 11:46:45.676061 +08:00 trying to parse dif app.android-arm64.symbols
      DEBUG   2021-09-18 11:46:45.676216 +08:00 trying to parse dif app.android-arm.symbols
      DEBUG   2021-09-18 11:46:45.676287 +08:00 finished location /Users/tom/QAPMain/Development/frontend/yplusplus/build/split-debug-info/
    > Found 0 debug information files
    > No debug information files found
      DEBUG   2021-09-18 11:46:45.676376 +08:00 request POST https://sentry.io/api/0/projects/rzzsdxx/rzzsdxx/reprocessing/
      DEBUG   2021-09-18 11:46:45.676393 +08:00 using token authentication
      DEBUG   2021-09-18 11:46:45.676406 +08:00 retry number 0, max retries: 0
      DEBUG   2021-09-18 11:46:45.676605 +08:00 > POST /api/0/projects/rzzsdxx/rzzsdxx/reprocessing/ HTTP/1.1
      DEBUG   2021-09-18 11:46:45.676627 +08:00 > Host: sentry.io
      DEBUG   2021-09-18 11:46:45.676637 +08:00 > Accept: */*
      DEBUG   2021-09-18 11:46:45.676645 +08:00 > Connection: TE
      DEBUG   2021-09-18 11:46:45.676652 +08:00 > TE: gzip
      DEBUG   2021-09-18 11:46:45.676660 +08:00 > User-Agent: sentry-cli/1.63.1
      DEBUG   2021-09-18 11:46:45.676684 +08:00 > Authorization: Bearer 3d29e651***
      DEBUG   2021-09-18 11:46:45.676694 +08:00 > Content-Length: 0
      DEBUG   2021-09-18 11:46:45.938299 +08:00 < HTTP/1.1 200 OK
      DEBUG   2021-09-18 11:46:45.938327 +08:00 < Server: nginx
      DEBUG   2021-09-18 11:46:45.938336 +08:00 < Date: Sat, 18 Sep 2021 03:46:45 GMT
      DEBUG   2021-09-18 11:46:45.938345 +08:00 < Content-Length: 0
      DEBUG   2021-09-18 11:46:45.938352 +08:00 < Connection: keep-alive
      DEBUG   2021-09-18 11:46:45.938358 +08:00 < allow: POST, OPTIONS
      DEBUG   2021-09-18 11:46:45.938364 +08:00 < access-control-allow-methods: POST, OPTIONS
      DEBUG   2021-09-18 11:46:45.938373 +08:00 < access-control-allow-headers: X-Sentry-Auth, X-Requested-With, Origin, Accept, Content-Type, Authentication, Authorization, Content-Encoding
      DEBUG   2021-09-18 11:46:45.938381 +08:00 < access-control-expose-headers: X-Sentry-Error, Retry-After
      DEBUG   2021-09-18 11:46:45.938388 +08:00 < access-control-allow-origin: *
      DEBUG   2021-09-18 11:46:45.938394 +08:00 < vary: Accept-Language, Cookie
      DEBUG   2021-09-18 11:46:45.938400 +08:00 < content-language: en
      DEBUG   2021-09-18 11:46:45.938406 +08:00 < x-frame-options: deny
      DEBUG   2021-09-18 11:46:45.938412 +08:00 < x-content-type-options: nosniff
      DEBUG   2021-09-18 11:46:45.938418 +08:00 < x-xss-protection: 1; mode=block
      DEBUG   2021-09-18 11:46:45.938424 +08:00 < x-envoy-attempt-count: 1
      DEBUG   2021-09-18 11:46:45.938430 +08:00 < x-envoy-upstream-service-time: 33
      DEBUG   2021-09-18 11:46:45.938437 +08:00 < x-served-by: getsentry-web-default-production-79f56bf547-hxmnl
      DEBUG   2021-09-18 11:46:45.938443 +08:00 < x-served-by: lb-8
      DEBUG   2021-09-18 11:46:45.938449 +08:00 < Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
      DEBUG   2021-09-18 11:46:45.938468 +08:00 response status: 200
      DEBUG   2021-09-18 11:46:45.938483 +08:00 body: 
    

    Expected result:

    Before upgrading to flutter 2.5, it can find and upload the debug info files!

    p.s. the files are there

    ls -al myfolder
    total 40472
    drwxr-xr-x   5 tom  staff      160  9 18 11:43 .
    drwxr-xr-x  45 tom  staff     1440  9 18 11:46 ..
    -rw-r--r--   1 tom  staff  6315664  9 18 11:43 app.android-arm.symbols
    -rw-r--r--   1 tom  staff  7201872  9 18 11:43 app.android-arm64.symbols
    -rw-r--r--   1 tom  staff  7199048  9 18 11:43 app.android-x64.symbols
    
    Platform: Android 
    opened by fzyzcjy 26
  • [dio] Improve fingerprinting

    [dio] Improve fingerprinting

    I tested the new sentry_dio package a little bit.

    My issue is that due to how DIO throws DioErrors, the stacktrace is always the same (that's a problem in itself and probably needs to be improved) - this results in all captured errors having the same fingerprint.

    Additionally a DioError can wrap a cause error which may be the real reason why the request failed, this currently does not get reported.

    @ueman What are you thoughts on this?

    enhancement dio Platform: Dart 
    opened by kuhnroyal 24
  • Add support to null safety

    Add support to null safety

    Flutter is gearing up towards null-safety.

    This issue is to track progress adding support to it.

    • [X] Support on sentry #298
    • [X] Support on sentry_flutter #337
    • [ ] CI uses new Action #334
    • [ ] Rename conflicting classes #250

    Related to #99

    The migration steps are here: https://dart.dev/null-safety/migration-guide

    Important to note we should start by migrating our dependencies to the null safety version.

    • [X] uuid support tracking: https://github.com/Daegalus/dart-uuid/issues/50
    • [X] http support tracking: https://github.com/dart-lang/http/issues/501
    • [X] device_info seems to be almost there
    enhancement up-for-grabs 
    opened by bruno-garcia 24
  • Feat: Attachment Support

    Feat: Attachment Support

    :scroll: Description

    :bulb: Motivation and Context

    Closes #289

    :green_heart: How did you test it?

    :pencil: Checklist

    • [x] I reviewed submitted code
    • [x] I added tests to verify changes
    • [x] I updated the docs if needed
    • [x] All tests passing
    • [ ] No breaking changes

    :crystal_ball: Next steps

    opened by ueman 22
  • Support for `--obfuscate` and `--split-debug-info` for iOS/macOS apps

    Support for `--obfuscate` and `--split-debug-info` for iOS/macOS apps

    This issue is to track the support for --obfuscate and --split-debug-info on iOS apps.

    The original request was done on the flutter/flutter issue tracker and since then, Android support was added to Sentry.

    For this to happen, Sentry expect symbols on iOS to be in a 'standard' format for that platform. Namely Mach-O files. The request for the Dart team for this support is tracked here.

    Support for desktop is tracked separately, here.

    enhancement flutter Platform: Cocoa Impact: Large Effort: Large Platform: Dart 
    opened by bruno-garcia 22
  • No line number for Flutter ffi C/C++ code

    No line number for Flutter ffi C/C++ code

    Platform:

    • [ ] Dart
    • [x] Flutter Android or iOS
    • [ ] Flutter Web

    IDE:

    • [ ] VSCode
    • [x] IntelliJ/AS
    • [ ] XCode
    • [ ] Other, which one?

    split-debug-info and obfuscate (Flutter Android or iOS) or CanvasKit (Flutter Web):

    • [ ] Enabled
    • [x] Disabled

    Platform installed with:

    • [x] pub.dev
    • [ ] GitHub

    Output of the command flutter doctor -v below:

    [✓] Flutter (Channel stable, 2.0.1, on Mac OS X 10.15.7 19H524 darwin-x64, locale
        zh-Hans-CN)
        • Flutter version 2.0.1 at /Users/tom/opt/flutter
        • Framework revision c5a4b4029c (3 周前), 2021-03-04 09:47:48 -0800
        • Engine revision 40441def69
        • Dart version 2.12.0
        • Pub download mirror https://pub.flutter-io.cn
        • Flutter download mirror https://storage.flutter-io.cn
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
        • Android SDK at /Users/tom/Library/Android/sdk
        • Platform android-30, build-tools 29.0.3
        • ANDROID_SDK_ROOT = /Users/tom/Library/Android/sdk
        • Java binary at: /Users/tom/Library/Application
          Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/201.7042882/Android
          Studio.app/Contents/jre/jdk/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build
          1.8.0_242-release-1644-b3-6915495)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Xcode 12.4, Build version 12D4e
        • CocoaPods version 1.10.0
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 4.1)
        • Android Studio at /Users/tom/Library/Application
          Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/201.7042882/Android
          Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build
          1.8.0_242-release-1644-b3-6915495)
    
    [✓] IntelliJ IDEA Ultimate Edition (version 2020.3)
        • IntelliJ at /Users/tom/Applications/JetBrains Toolbox/IntelliJ IDEA
          Ultimate.app
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
    
    [✓] VS Code (version 1.53.2)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.20.0
    
    [✓] Connected device (2 available)
        • iPhone 8 (mobile) • 2B6C1189-40D3-4E60-898F-2A5E58ACAA3D • ios            •
          com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
        • Chrome (web)      • chrome                               • web-javascript •
          Google Chrome 89.0.4389.90
    
    • No issues found!
    

    The version of the SDK (See pubspec.lock): latest


    I have the following issue:

    Hi thanks for the lib! I use Flutter FFI to call some C++ code. Some crash happens there. But when looking at sentry, it does not tell me the line number in the call stack. See below:

    image

    Another example:

    image

    I wonder what should I do to reveal the line numbers? I guess I should upload some debug symbols, but there is already some method names so maybe no need for symbols? And which files should I upload (I only see instructions for C++ which is quite different)

    Steps to reproduce:

    • see above

    Actual result:

    • see above

    Expected result:

    • see above
    flutter 
    opened by fzyzcjy 22
  • Many

    Many "Stack Overflow" issues on Flutter Web

    Platform:

    • [ ] Dart
    • [ ] Flutter Android or iOS
    • [x] Flutter Web

    IDE:

    • [x] VSCode
    • [ ] IntelliJ/AS
    • [ ] XCode
    • [ ] Other, which one?

    split-debug-info and obfuscate (Flutter Android or iOS) or CanvasKit (Flutter Web):

    • [x] Enabled
    • [ ] Disabled

    Platform installed with:

    • [x] pub.dev
    • [ ] GitHub

    Output of the command flutter doctor -v below:

    [✓] Flutter (Channel stable, 3.3.10, on macOS 13.1 22C65 darwin-arm, locale en-US)
        • Flutter version 3.3.10 on channel stable at /Users/james/Development/flutter
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision 135454af32 (2 weeks ago), 2022-12-15 07:36:55 -0800
        • Engine revision 3316dd8728
        • Dart version 2.18.6
        • DevTools version 2.15.0
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
        • Android SDK at /Users/james/Library/Android/sdk
        • Platform android-33, build-tools 32.1.0-rc1
        • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 14.2)
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Build 14C18
        • CocoaPods version 1.11.3
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 2021.2)
        • Android Studio at /Applications/Android Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    
    [✓] VS Code (version 1.74.2)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.52.0
    
    [✓] Connected device (3 available)
        • Apollo (mobile) • 00008110-0004752E3AB8801E • ios            • iOS 16.2 20C65
        • macOS (desktop) • macos                     • darwin-arm64   • macOS 13.1 22C65 darwin-arm
        • Chrome (web)    • chrome                    • web-javascript • Google Chrome 108.0.5359.71
    
    [✓] HTTP Host Availability
        • All required HTTP hosts are available
    
    • No issues found!
    

    The version of the SDK (See pubspec.lock): 6.18.1


    I have the following issue:

    Since upgrading to Flutter 3.3 (along with other dependencies, Sentry included), we're seeing lots of random issues with the only error value being Stack Overflow, like "minified:xyz: Stack Overflow". This behavior was not seen prior to this sweeping upgrade.

    Not all web issues reported by Sentry have values of "Stack Overflow", but many do, and they have completely different stack traces. There's no rhyme or reason to it that we can identify, nor have we been able to reproduce it on the Flutter side. It's also web only. The actual Flutter/Dart errors do not appear to have anything do with a Stack Overflow. Seen on Chrome, Safari and Edge.

    Steps to reproduce:

    Exact steps unknown. Here's our Sentry integration:

    void main() async {
      await SentryFlutter.init(
        (SentryFlutterOptions options) async {
          WidgetsFlutterBinding.ensureInitialized();
    
          options
            ..dsn = kDebugMode ? '...' : '...'
            ..tracesSampleRate = 0.02;
        },
        appRunner: () async {
          await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
    
          runApp(
            DefaultAssetBundle(
              bundle: SentryAssetBundle(),
              child: const App(),
            ),
          );
        },
      );
    }
    

    Here's our build process:

    flutter build web --web-renderer canvaskit --source-maps
    flutter build appbundle
    flutter build ipa
    flutter packages pub run sentry_dart_plugin
    

    Here's our Sentry config in pubspec.yaml:

    sentry:
      upload_native_symbols: true
      upload_source_maps: true
      include_native_sources: true
      project: ...
      org: ...
      auth_token: ...
    

    Actual result:

    • Most Sentry Flutter Web error reports just say "Stack Overflow".

    Expected result:

    • Actual error messages.
    bug Platform: Dart Status: Untriaged 
    opened by stx 0
  • chore(deps): update Android SDK to v6.11.0

    chore(deps): update Android SDK to v6.11.0

    Bumps flutter/scripts/update-android.sh from 6.10.0 to 6.11.0.

    Auto-generated by a dependency updater.

    Changelog

    6.11.0

    Features

    • Disable Android concurrent profiling (#2434)
    • Add logging for OpenTelemetry integration (#2425)
    • Auto add OpenTelemetryLinkErrorEventProcessor for Spring Boot (#2429)

    Fixes

    • Use minSdk compatible Objects class (#2436)
    • Prevent R8 from warning on missing classes, as we check for their presence at runtime (#2439)

    Dependencies

    dependencies 
    opened by github-actions[bot] 1
  • SentryUserInteractionWidget sometimes finds the wrong widget

    SentryUserInteractionWidget sometimes finds the wrong widget

    Platform:

    • Flutter Android or iOS

    IDE:

    • VSCode

    _split-debug-info and obfuscate (Flutter Android or iOS) or CanvasKit (Flutter Web):

    • Disabled

    Platform installed with:

    • pub.dev

    Output of the command flutter doctor -v below:

    [✓] Flutter (Channel stable, 3.3.9, on macOS 13.1 22C65 darwin-arm, locale en-IT) • Flutter version 3.3.9 on channel stable at /Users/simone/dev/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision b8f7f1f986 (5 weeks ago), 2022-11-23 06:43:51 +0900 • Engine revision 8f2221fbef • Dart version 2.18.5 • DevTools version 2.15.0

    [✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0) • Android SDK at /Users/simone/Library/Android/sdk • Platform android-33, build-tools 32.0.0 • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866) • All Android licenses accepted.

    [✓] Xcode - develop for iOS and macOS (Xcode 14.2) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 14C18 • CocoaPods version 1.11.3

    [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

    [✓] Android Studio (version 2021.3) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: 🔨 https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

    [✓] VS Code (version 1.74.2) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.56.0

    [✓] Connected device (2 available) • macOS (desktop) • macos • darwin-arm64 • macOS 13.1 22C65 darwin-arm • Chrome (web) • chrome • web-javascript • Google Chrome 108.0.5359.124

    [✓] HTTP Host Availability • All required HTTP hosts are available

    • No issues found!

    The version of the SDK (See pubspec.lock): 6.18.1


    I have the following issue:

    Sometimes tapping an element makes SentryUserInteractionWidget find the wrong widget when there is another page 'behind' in the navigation stack with a tappable element at the same position.

    Steps to reproduce:

    • Run the example app given below, navigate to page2 and tap 'Page 2 button'

    Code to reproduce:

    import 'package:flutter/material.dart';
    import 'package:sentry_flutter/sentry_flutter.dart';
    
    Future<void> main() async {
      final globalKey = GlobalKey();
      await SentryFlutter.init(
        (options) {
          options
            ..dsn = 'dsn'
            ..enableUserInteractionBreadcrumbs = true
            ..beforeBreadcrumb = (breadcrumb, {hint}) {
              if (breadcrumb!.category == 'ui.click') {
                print('Breadcrumb ui.click: ${breadcrumb.data}');
              }
              return breadcrumb;
            };
        },
        appRunner: () {
          return runApp(
            SentryUserInteractionWidget(
              key: globalKey,
              child: const MyApp(),
            ),
          );
        },
      );
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          routes: {'page2': (context) => const Page2()},
          home: const Page1(),
        );
      }
    }
    
    class Page1 extends StatelessWidget {
      const Page1({super.key});
    
      void _goToPage2(BuildContext context) {
        Navigator.of(context).pushNamed('page2');
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Center(
            child: Padding(
              padding: const EdgeInsets.all(50),
              child: ListView(
                children: [
                  MaterialButton(
                    key: const ValueKey('Page1 button'),
                    onPressed: () => print('page1 button'),
                    color: Colors.green,
                    child: const Text('Page1 button'),
                  ),
                ],
              ),
            ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: () => _goToPage2(context),
            tooltip: 'page2',
            child: const Icon(Icons.navigate_next),
          ),
        );
      }
    }
    
    class Page2 extends StatelessWidget {
      const Page2({super.key});
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Center(
            child: Padding(
              padding: const EdgeInsets.all(50),
              child: ListView(
                children: [
                  MaterialButton(
                    key: const ValueKey('Page2 button'),
                    onPressed: () => print('page2 button'),
                    color: Colors.red,
                    child: const Text('Page2 button'),
                  ),
                ],
              ),
            ),
          ),
        );
      }
    }
    

    Actual result:

    • Console output 'Breadcrumb ui.click: {view.id: Page1 button, view.class: MaterialButton}'

    Expected result:

    • Console output 'Breadcrumb ui.click: {view.id: Page2 button, view.class: MaterialButton}'

    Tested on both iOS and Android with different devices. On Android it seems a bit better, meaning that it finds the wrong button less often.

    Thanks,

    Simone

    bug Platform: Dart Status: Untriaged 
    opened by sstasi95 0
  • Allow to access installationId

    Allow to access installationId

    From the docs https://docs.sentry.io/platforms/dart/enriching-events/identify-user/

    If you don't provide an id, the SDK falls back to installationId, which the SDK randomly generates once during an app's installation

    It would be great if there'd be a way to access thid id. If I understood it correctly, it is possible to set a own SentryUser with a custom uuid instead, but this would destroy all previous user records.

    Platform: Dart 
    opened by M123-dev 3
  • Investigate FFI based libs for APM Support

    Investigate FFI based libs for APM Support

    Description

    Example https://pub.dev/packages/realm and https://pub.dev/packages/isar The goal is to find out if there's a way to hook up into the FFI system and intercept before & after calls via FFI.

    performance Platform: Dart FFI 
    opened by marandaneto 1
Releases(6.18.1)
Owner
Sentry
Real-time crash reporting for your web apps, mobile apps, and games.
Sentry
A tool to easily install the Android SDK command-line and platform tools.

gibadb A tool to easily install the Android SDK command-line and platform tools. For developers: This README describes the CLI tool that ships with th

null 3 Sep 22, 2022
Open source SDK to quickly integrate subscriptions, stop worring about code maintenance, and getting advanced real-time data

Open source SDK to quickly integrate subscriptions, stop worring about code maintenance, and getting advanced real-time data. Javascript / iOS glue framework

glassfy 8 Oct 31, 2022
Flutter Version Management: A simple CLI to manage Flutter SDK versions.

fvm Flutter Version Management: A simple cli to manage Flutter SDK versions. FVM helps with the need for a consistent app builds by allowing to refere

Leo Farias 3.2k Jan 8, 2023
An extension to the Flutter SDK for building Flutter applications for Tizen devices.

Flutter for Tizen An extension to the Flutter SDK for building Flutter applications for Tizen devices. Flutter and the related logo are trademarks of

null 356 Dec 16, 2022
A Dart build script that downloads the Protobuf compiler and Dart plugin to streamline .proto to .dart compilation.

A Dart build script that downloads the Protobuf compiler and Dart plugin to streamline .proto to .dart compilation.

Julien Scholz 10 Oct 26, 2022
Quiver is a set of utility libraries for Dart that makes using many Dart libraries easier and more convenient, or adds additional functionality.

Quiver is a set of utility libraries for Dart that makes using many Dart libraries easier and more convenient, or adds additional functionality.

Google 905 Jan 2, 2023
Dart wrapper via dart:ffi for https://github.com/libusb/libusb

libusb Dart wrapper via dart:ffi for https://github.com/libusb/libusb Environment Windows(10) macOS Linux(Ubuntu 18.04 LTS) Usage Checkout example Fea

Woodemi Co., Ltd 28 Dec 20, 2022
Extensible Dart interpreter for Dart with full interop

dart_eval is an extensible interpreter for the Dart language, written in Dart. It's powered under the hood by the Dart analyzer, so it achieves 100% c

Ethan 169 Dec 28, 2022
The Dart Time Machine is a date and time library for Flutter, Web, and Server with support for timezones, calendars, cultures, formatting and parsing.

The Dart Time Machine is a date and time library for Flutter, Web, and Server with support for timezones, calendars, cultures, formatting and parsing.

null 2 Oct 8, 2021
Library for help you make userbot or bot telegram and support tdlib telegram database and only support nodejs dart and google-apps-script

To-Do telegram client dart ✅️ support multi token ( bot / userbot ) ✅️ support bot and userbot ✅️ support telegram-bot-api local server ✅️ support tel

Azka Full Snack Developer:) 73 Jan 7, 2023
A dart package to help you parse and evaluate infix mathematical expressions into their prefix and postfix notations.

A dart package to help you parse and evaluate infix mathematical expressions into their prefix and postfix notations.

Miguel Manjarres 2 Jan 28, 2022
Args simple - A simple argument parser and handler, integrated with JSON and dart

args_simple A simple argument parser and handler, integrated with JSON and dart:

Graciliano Monteiro Passos 1 Jan 22, 2022
Environment specific config generator for Dart and Flutter applications during CI/CD builds

Environment Config Generator Environment specific config generator. Allows to specify env configuration during CI/CD build. Primarily created to simpl

Denis Beketsky 86 Dec 2, 2022
generate massive amounts of fake data in dart and flutter

generate massive amounts of fake data in Dart & Flutter Faker.dart is a dart port of the famous faker.js package for the web and NodeJS ?? Usage faker

Cas van Luijtelaar 26 Nov 28, 2022
A simple Flutter / Dart Utility class for converting complex objects to uri and query string

A simple Flutter / Dart Utility class for converting complex or nested objects to uri and query strings you can follow the the article on how this cla

Opata Joshua 5 Sep 7, 2022
Log snapshot management solution (iOS/Android/Web/Server) built with Flutter/Dart using Bloc pattern and Firebase Firestore backend.

Log snapshot management solution (iOS/Android/Web/Server) built with Flutter/Dart using Bloc pattern and Firebase Firestore backend.

Alexey Perov 5 Nov 9, 2022
An encapsulation made around openrouteservice API for Dart and Flutter projects.

An encapsulation made around openrouteservice API for Dart and Flutter projects. Made for easy generation of Routes and Directions on Maps, Isochrones, Time-Distance Matrix, Pelias Geocoding, POIs, Elevation and routing Optimizations using their amazing API.

Dhiman Seal 20 Oct 10, 2022
Automatically generate usecase classes from your repository class definition in Dart and Flutter

Repo Case Automatically generate usecase classes from your repository class definition in Dart and Flutter. Check out the official guide on repo_case

Sandro Maglione 5 Jul 30, 2022
Future based HTTP client for the Dart and Flutter

Uno Future based HTTP client for the Dart and Flutter. Uno, inspired by Axios, bringing a simple and robust experience to the crossplatform apps in Fl

Flutterando 56 Dec 16, 2022