You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.1 KiB
75 lines
2.1 KiB
import 'package:flutter/material.dart'; |
|
import 'dart:async'; |
|
|
|
import 'package:shared_preferences/shared_preferences.dart' |
|
as shared_preferences; |
|
|
|
void main() { |
|
runApp(const MyApp()); |
|
} |
|
|
|
class MyApp extends StatefulWidget { |
|
const MyApp({super.key}); |
|
|
|
@override |
|
_MyAppState createState() => _MyAppState(); |
|
} |
|
|
|
class _MyAppState extends State<MyApp> { |
|
late int sumResult; |
|
late Future<int> sumAsyncResult; |
|
|
|
@override |
|
void initState() { |
|
super.initState(); |
|
sumResult = shared_preferences.sum(1, 2); |
|
sumAsyncResult = shared_preferences.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, |
|
); |
|
}, |
|
), |
|
], |
|
), |
|
), |
|
), |
|
), |
|
); |
|
} |
|
}
|
|
|