https://github.com/amake/org_flutter
Org Mode widgets for Flutter
https://github.com/amake/org_flutter
flutter org-mode
Last synced: over 1 year ago
JSON representation
Org Mode widgets for Flutter
- Host: GitHub
- URL: https://github.com/amake/org_flutter
- Owner: amake
- License: mit
- Created: 2020-02-23T14:47:15.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-03-09T14:52:28.000Z (over 1 year ago)
- Last Synced: 2025-03-16T07:22:45.737Z (over 1 year ago)
- Topics: flutter, org-mode
- Language: Dart
- Homepage:
- Size: 1.12 MB
- Stars: 18
- Watchers: 4
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# org_flutter
[Org Mode](https://orgmode.org/) widgets for Flutter.
# Usage
For parsing Org Mode documents, see
[org_parser](https://github.com/amake/org_parser). For an example application
that displays Org Mode documents with org_parser and org_flutter, see
[Orgro](https://orgro.org).
The simplest way to display an Org Mode document in your Flutter application is
to use the `Org` widget:
```dart
import 'package:org_flutter/org_flutter.dart';
class MyOrgViewWidget extends StatelessWidget {
Widget build(BuildContext context) {
return Org('''* TODO [#A] foo bar
baz buzz''');
}
}
```
See the [example](./example/lib/main.dart) for more.
## Rich text
Use Org markup to create rich `Text`-equivalent widgets with `OrgText`.
```dart
OrgText('*This* is a /rich/ text label ([[https://example.com][details]])')
```
## Advanced
For more advanced usage, such as specifying link handling, use `OrgController`
in concert with `OrgRootWidget`:
```dart
import 'package:org_flutter/org_flutter.dart';
Widget build(BuildContext context) {
final doc = OrgDocument.parse(
rawOrgModeDocString,
// Interpret e.g. #+TODO: settings at the cost of a second parsing pass
interpretEmbeddedSettings: true,
);
return OrgController(
root: doc,
child: OrgLocator( // Include OrgLocator to enable tap-to-jump on footnotes, etc.
child: OrgRootWidget(
style: myTextStyle,
onLinkTap: launch, // e.g. from url_launcher package
child: OrgDocumentWidget(doc),
),
),
);
}
```
Place `OrgController` higher up in your widget hierarchy and access via
`OrgController.of(context)` to dynamically control various properties of the
displayed document:
```dart
IconButton(
icon: const Icon(Icons.repeat),
onPressed: OrgController.of(context).cycleVisibility,
);
```
## Text selection
The Org Mode text is not selectable by default, but you can make it so by
wrapping the widget in
[`SelectionArea`](https://api.flutter.dev/flutter/material/SelectionArea-class.html).