import 'package:flutter/material.dart'; import 'package:flutter_wasm_interop/flutter_wasm_interop.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Flutter Demo', theme: ThemeData.light(), darkTheme: ThemeData.dark(), home: MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State { int _counter = 0; WasmLoader _wasm; @override void initState() { _wasm = WasmLoader.fromAssets('assets/add.wasm'); _wasm.init().then((ready) { if (mounted) setState(() {}); }); super.initState(); } void _incrementCounter() { if (_wasm != null) { if (mounted) setState(() { _counter = _wasm.functionParam('add_one', _counter) as int; }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( 'You have pushed the button this many times:', ), Text( '$_counter', style: Theme.of(context).textTheme.headlineMedium, ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: Icon(Icons.add), ), ); } }