fix(docs): add readme and changelog

Signed-off-by: Sphericalkat <me@kat.bio>
This commit is contained in:
Amogh Lele 2024-07-18 02:02:02 +05:30
parent e6eee54104
commit f5aa107fac
Signed by: sphericalkat
GPG Key ID: 1C022B9CED2425B4
3 changed files with 15 additions and 92 deletions

View File

@ -1,3 +1,5 @@
## 0.0.1 ## 0.0.1
* TODO: Describe initial release. * Initial release
* Only supports Android for now. iOS support coming soon.

View File

@ -1,95 +1,16 @@
# readability # readability
A new Flutter FFI plugin project. A flutter plugin that wraps the native Readability [library](https://github.com/go-shiori/go-readability) for Android and iOS.
## Getting Started ## Usage
Simply call the `parseAsync` method with the URL of the article you want to parse. The method returns a `ArticleResult` object with the title, content, and excerpt of the article.
This project is a starting point for a Flutter ```dart
[FFI plugin](https://docs.flutter.dev/development/platform-integration/c-interop), import 'package:readability/readability.dart';
a specialized package that includes native code directly invoked with Dart FFI.
## Project structure final result = await Readability.parseAsync('https://example.com/article');
print(result.title);
This template uses the following structure: print(result.content);
* `src`: Contains the native source code, and a CmakeFile.txt file for building
that source code into a dynamic library.
* `lib`: Contains the Dart code that defines the API of the plugin, and which
calls into the native code using `dart:ffi`.
* platform folders (`android`, `ios`, `windows`, etc.): Contains the build files
for building and bundling the native code library with the platform application.
## Building and bundling native code
The `pubspec.yaml` specifies FFI plugins as follows:
```yaml
plugin:
platforms:
some_platform:
ffiPlugin: true
``` ```
This configuration invokes the native build for the various target platforms An example of how to use this plugin can be found in the `example` directory.
and bundles the binaries in Flutter applications using these FFI plugins.
This can be combined with dartPluginClass, such as when FFI is used for the
implementation of one platform in a federated plugin:
```yaml
plugin:
implements: some_other_plugin
platforms:
some_platform:
dartPluginClass: SomeClass
ffiPlugin: true
```
A plugin can have both FFI and method channels:
```yaml
plugin:
platforms:
some_platform:
pluginClass: SomeName
ffiPlugin: true
```
The native build systems that are invoked by FFI (and method channel) plugins are:
* For Android: Gradle, which invokes the Android NDK for native builds.
* See the documentation in android/build.gradle.
* For iOS and MacOS: Xcode, via CocoaPods.
* See the documentation in ios/readability.podspec.
* See the documentation in macos/readability.podspec.
* For Linux and Windows: CMake.
* See the documentation in linux/CMakeLists.txt.
* See the documentation in windows/CMakeLists.txt.
## Binding to native code
To use the native code, bindings in Dart are needed.
To avoid writing these by hand, they are generated from the header file
(`src/readability.h`) by `package:ffigen`.
Regenerate the bindings by running `dart run ffigen --config ffigen.yaml`.
## Invoking native code
Very short-running native functions can be directly invoked from any isolate.
For example, see `sum` in `lib/readability.dart`.
Longer-running functions should be invoked on a helper isolate to avoid
dropping frames in Flutter applications.
For example, see `sumAsync` in `lib/readability.dart`.
## Flutter help
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.
The plugin project was generated without specifying the `--platforms` flag, so no platforms are currently supported.
To add platforms, run `flutter create -t plugin_ffi --platforms <platforms> .` in this directory.
You can also find a detailed instruction on how to add platforms in the `pubspec.yaml` at https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms.

View File

@ -35,6 +35,6 @@ flutter:
android: android:
pluginClass: ReadabilityPlugin pluginClass: ReadabilityPlugin
ffiPlugin: true ffiPlugin: true
ios: # ios:
pluginClass: ReadabilityPlugin # pluginClass: ReadabilityPlugin
ffiPlugin: true # ffiPlugin: true