Org Mode widgets for Flutter
https://github.com/amake/org_flutter.git
Org Mode widgets for Flutter.
For parsing Org Mode documents, see orgparser. For an example application that displays Org Mode documents with orgparser and orgflutter, see Orgro.
The simplest way to display an Org Mode document in your Flutter application is
to use the Org widget:
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 for more.
Use Org markup to create rich Text-equivalent widgets with OrgText.
OrgText('*This* is a /rich/ text label ([[https://example.com][details]])')
For more advanced usage, such as specifying link handling, use OrgController
in concert with OrgRootWidget:
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:
IconButton(
icon: const Icon(Icons.repeat),
onPressed: OrgController.of(context).cycleVisibility,
);
The Org Mode text is not selectable by default, but you can make it so by
wrapping the widget in
SelectionArea.