| import 'package:flutter/material.dart'; |
| import 'dart:async'; |
| |
| import 'package:jni/jni.dart' as jni; |
| |
| void main() { |
| runApp(const MyApp()); |
| } |
| |
| class MyApp extends StatefulWidget { |
| const MyApp({Key? key}) : super(key: key); |
| |
| @override |
| _MyAppState createState() => _MyAppState(); |
| } |
| |
| class _MyAppState extends State<MyApp> { |
| late int sumResult; |
| late Future<int> sumAsyncResult; |
| |
| @override |
| void initState() { |
| super.initState(); |
| sumResult = jni.sum(1, 2); |
| sumAsyncResult = jni.sumAsync(3, 4); |
| } |
| |
| @override |
| Widget build(BuildContext context) { |
| const textStyle = TextStyle(fontSize: 25); |
| const spacerSmall = SizedBox(height: 10); |
| return MaterialApp( |
| home: Scaffold( |
| appBar: AppBar( |
| title: const Text('Native Packages'), |
| ), |
| body: SingleChildScrollView( |
| child: Container( |
| padding: const EdgeInsets.all(10), |
| child: Column( |
| children: [ |
| const Text( |
| 'This calls a native function through FFI that is shipped as source in the package. ' |
| 'The native code is built as part of the Flutter Runner build.', |
| style: textStyle, |
| textAlign: TextAlign.center, |
| ), |
| spacerSmall, |
| Text( |
| 'sum(1, 2) = $sumResult', |
| style: textStyle, |
| textAlign: TextAlign.center, |
| ), |
| spacerSmall, |
| FutureBuilder<int>( |
| future: sumAsyncResult, |
| builder: (BuildContext context, AsyncSnapshot<int> value) { |
| final displayValue = |
| (value.hasData) ? value.data : 'loading'; |
| return Text( |
| 'await sumAsync(3, 4) = $displayValue', |
| style: textStyle, |
| textAlign: TextAlign.center, |
| ); |
| }, |
| ), |
| ], |
| ), |
| ), |
| ), |
| ), |
| ); |
| } |
| } |