1
0
mirror of https://github.com/flutter/samples.git synced 2025-11-08 13:58:47 +00:00
Files
samples/experimental/pedometer
dependabot[bot] 203a0f422d Bump fl_chart from 0.69.2 to 0.70.0 in /experimental/pedometer/example (#2557)
Bumps [fl_chart](https://github.com/imaNNeo/fl_chart) from 0.69.2 to 0.70.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/imaNNeo/fl_chart/releases">fl_chart's releases</a>.</em></p>
<blockquote>
<h2>0.70.0</h2>
<ul>
<li><strong>FEATURE</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) Implemented a 5 years-old feature request about scroll and zoom support in our axis-based charts. Special thanks to <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a> who made it happen, <a href="https://redirect.github.com/imaNNeo/fl_chart/issues/71">#71</a></li>
<li><strong>IMPROVEMENT</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) Added functionality to control the transformation of axis-based charts using <code>FlTransformationConfig</code> class. You can now enable scaling and panning for <code>LineChart</code>, <code>BarChart</code> and <code>ScatterChart</code> using this class</li>
<li><strong>IMPROVEMENT</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) Added some new unit tests in <code>bar_chart_data_extensions_test.dart</code>, <code>gradient_extension_test.dart</code> and fixed a typo in <code>bar_chart_data.dart</code></li>
<li><strong>BREAKING</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) Fixed the equatable functionality in our BarChart. We hope it will not affect anything in our chart, but because the behaviour is changed, we marked it as a breaking change. (read more <a href="https://redirect.github.com/imaNNeo/fl_chart/pull/1789#discussion_r1858371718">here</a>)</li>
<li><strong>BREAKING</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) <code>BarChart</code> is not const anymore due to adding an assert to check if transformations are allowed depending on the <code>BarChartData.alignment</code> property (read more <a href="https://github.com/imaNNeo/fl_chart/blob/main/repo_files/documentations/migration_guides/0.70.0/MIGRATION_00_70_00.md">here</a>)</li>
<li><strong>IMPROVEMENT</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) Upgrade to the new Flutter version (<a href="https://medium.com/flutter/whats-new-in-flutter-3-27-28341129570c">3.27.0</a>), <a href="https://redirect.github.com/imaNNeo/fl_chart/issues/1804">#1804</a></li>
<li><strong>IMPROVEMENT</strong> (by <a href="https://github.com/AliAkberAakash"><code>@​AliAkberAakash</code></a>) Minor typo fix in our line chart documentation, <a href="https://redirect.github.com/imaNNeo/fl_chart/issues/1795">#1795</a></li>
<li><strong>IMPROVEMENT</strong> (by <a href="https://github.com/imaNNeo"><code>@​imaNNeo</code></a>) Fixed the code coverage API rate-limit issue</li>
<li><strong>Improvement</strong> (by <a href="https://github.com/imaNNeo"><code>@​imaNNeo</code></a>) Published the example app in Google Play and App Store. Other stores (such as <a href="https://snapcraft.io/store">snap store</a> and <a href="https://apps.microsoft.com/home">Microsoft Store</a>) will come next. You can download the Android version here in <a href="https://play.google.com/store/apps/details?id=dev.flchart.app">Google Play</a> and the iOS version here in <a href="https://apps.apple.com/us/app/fl-chart/id6476523019">App Store</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/imaNNeo/fl_chart/blob/main/CHANGELOG.md">fl_chart's changelog</a>.</em></p>
<blockquote>
<h2>0.70.0</h2>
<ul>
<li><strong>FEATURE</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) Implemented a 5 years-old feature request about scroll and zoom support in our axis-based charts. Special thanks to <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a> who made it happen, <a href="https://redirect.github.com/imaNNeo/fl_chart/issues/71">#71</a></li>
<li><strong>IMPROVEMENT</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) Added functionality to control the transformation of axis-based charts using <code>FlTransformationConfig</code> class. You can now enable scaling and panning for <code>LineChart</code>, <code>BarChart</code> and <code>ScatterChart</code> using this class</li>
<li><strong>IMPROVEMENT</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) Added some new unit tests in <code>bar_chart_data_extensions_test.dart</code>, <code>gradient_extension_test.dart</code> and fixed a typo in <code>bar_chart_data.dart</code></li>
<li><strong>BREAKING</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) Fixed the equatable functionality in our BarChart. We hope it will not affect anything in our chart, but because the behaviour is changed, we marked it as a breaking change. (read more <a href="https://redirect.github.com/imaNNeo/fl_chart/pull/1789#discussion_r1858371718">here</a>)</li>
<li><strong>BREAKING</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) <code>BarChart</code> is not const anymore due to adding an assert to check if transformations are allowed depending on the <code>BarChartData.alignment</code> property (read more <a href="https://github.com/imaNNeo/fl_chart/blob/main/repo_files/documentations/migration_guides/0.70.0/MIGRATION_00_70_00.md">here</a>)</li>
<li><strong>IMPROVEMENT</strong> (by <a href="https://github.com/Peetee06"><code>@​Peetee06</code></a>) Upgrade to the new Flutter version (<a href="https://medium.com/flutter/whats-new-in-flutter-3-27-28341129570c">3.27.0</a>), <a href="https://redirect.github.com/imaNNeo/fl_chart/issues/1804">#1804</a></li>
<li><strong>IMPROVEMENT</strong> (by <a href="https://github.com/AliAkberAakash"><code>@​AliAkberAakash</code></a>) Minor typo fix in our line chart documentation, <a href="https://redirect.github.com/imaNNeo/fl_chart/issues/1795">#1795</a></li>
<li><strong>IMPROVEMENT</strong> (by <a href="https://github.com/imaNNeo"><code>@​imaNNeo</code></a>) Fixed the code coverage API rate-limit issue</li>
<li><strong>Improvement</strong> (by <a href="https://github.com/imaNNeo"><code>@​imaNNeo</code></a>) Published the example app in Google Play and App Store. Other stores (such as <a href="https://snapcraft.io/store">snap store</a> and <a href="https://apps.microsoft.com/home">Microsoft Store</a>) will come next. You can download the Android version here in <a href="https://play.google.com/store/apps/details?id=dev.flchart.app">Google Play</a> and the iOS version here in <a href="https://apps.apple.com/us/app/fl-chart/id6476523019">App Store</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="7d2cf3c0af"><code>7d2cf3c</code></a> Bump fl_chart version up to 0.70.0</li>
<li><a href="fd52df2854"><code>fd52df2</code></a> Update the changelog</li>
<li><a href="78db3f4ca0"><code>78db3f4</code></a> feat!: Add Chart zoom and pan (<a href="https://redirect.github.com/imaNNeo/fl_chart/issues/1793">#1793</a>)</li>
<li><a href="ce9e84905e"><code>ce9e849</code></a> Update codecov.yml to fix the rate-limit issue</li>
<li><a href="62af27fdbf"><code>62af27f</code></a> chore!: Update constraints for Flutter SDK to 3.27.0</li>
<li><a href="1998d92433"><code>1998d92</code></a> feat: Upgrade to Flutter 3.27.0</li>
<li><a href="269472b081"><code>269472b</code></a> Add stores links</li>
<li><a href="e191345b5e"><code>e191345</code></a> Update README.md</li>
<li><a href="964d64bc80"><code>964d64b</code></a> fix typo in line_chart.md</li>
<li><a href="efb1bb1914"><code>efb1bb1</code></a> fix: Call correct make target to run tests in verification workflow</li>
<li>Additional commits viewable in <a href="https://github.com/imaNNeo/fl_chart/compare/0.69.2...0.70.0">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fl_chart&package-manager=pub&previous-version=0.69.2&new-version=0.70.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>
2024-12-20 07:27:06 +00:00
..
2023-01-24 10:31:12 +10:00
2023-01-24 10:31:12 +10:00

FFIgen + JNIgen pedometer

This is a demo for some of our tooling around calling platform APIs directly from dart code. This repository represents a demo of a plugin that leverages FFIgen & JNIgen. There is also an example pedometer app that uses the bindings generated from these tools.

  • FFIgen is used to generate bindings for C, Objective-C and Swift APIs.
  • JNIgen is used to generate bindings for Java and Kotlin APIs.

These tools are both experimental and are currently a work in progress. If you find any issues or have feedback, please file it on the corresponding GitHub repositories.

Re-generating bindings

The bindings that allow the Dart code to call the platform code have already been generated in the \lib folder. You can regenerate them by following the steps below:

FFIgen

Configuration of FFIgen for the CoreMotion framework is in the ffigen.yaml file. FFIgen currently does not support autogenerating code to handle callbacks. So, there are a few extra steps needed to appropriately handle callbacks in Objective-C. You can read more about this limitation on dart.dev.

dart run ffigen --config ffigen.yaml

JNIgen

Configuration of JNIgen for the HealthConnect API is in the jnigen.yaml file.

  1. Build an Android APK file from the example app. Currently, JNIgen requires at least one APK build to obtain the classpaths of Android Gradle libraries.

    cd example && flutter build apk
    
  2. Return to the /pedometer directory and run jnigen:

    cd .. && dart run jnigen --config jnigen.yaml
    

Running the example app

The example app is located in the /example directory, and the following commands assume they are being run from that location.

Note that step counting is only available on physical devices.

iOS

  • Run flutter run and choose your physical device.
  • Allow the pedometer app access to step counting.

Android

  • Make sure that Google Fit is installed (to ensure that steps are being counted).
  • Run flutter run and choose your physical device.
  • Install Health Connect and grant access to Google Fit and the jni_demo app.

Project structure

  • src: Contains the native source code, and a CMakeLists.txt file for building that source code into a dynamic library.

  • lib: Contains the Dart code that defines the API of the plugin and calls into the native code using dart:ffi.

  • platform folders (ios etc.): Contain the build files for building and bundling the native code library with the platform application.

  • example: Contains the native source code for building that source code into a dynamic library.