import 'package:flutter/material.dart'; import 'dart:async'; import 'package:permission_handler/permission_handler.dart'; import 'package:flutter_smartconfig/flutter_smartconfig.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'ESP Onetouch Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: 'ESP Onetouch Demo'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State { final TextEditingController _bssidFilter = new TextEditingController(); final TextEditingController _ssidFilter = new TextEditingController(); final TextEditingController _passwordFilter = new TextEditingController(); bool _isLoading = false; String _ssid = ""; String _bssid = ""; String _password = ""; _MyHomePageState() { _ssidFilter.addListener(_ssidListen); _passwordFilter.addListener(_passwordListen); _bssidFilter.addListener(_bssidListen); } void _ssidListen() { if (_ssidFilter.text.isEmpty) { _ssid = ""; } else { _ssid = _ssidFilter.text; } } void _bssidListen() { if (_bssidFilter.text.isEmpty) { _bssid = ""; } else { _bssid = _bssidFilter.text; } } void _passwordListen() { if (_passwordFilter.text.isEmpty) { _password = ""; } else { _password = _passwordFilter.text; } } Future _configureEsp() async { setState(() { _isLoading = true; }); dynamic data = await FlutterSmartconfig.configureEsp( ssid: _ssid, bssid: _bssid, password: _password); print(data); setState(() { _isLoading = false; }); } Future _getConnectedWiFiInfo() async { Map permissions = await PermissionHandler().requestPermissions([ PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse ]); if (permissions[PermissionGroup.location] != PermissionStatus.granted || permissions[PermissionGroup.locationAlways] != PermissionStatus.granted || permissions[PermissionGroup.locationWhenInUse] != PermissionStatus.granted) { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: new Text("Fehler!"), content: new Text( "Wir benötigen Zugriff auf deinen Standort um auf die WLAN Funktion deines Betriessystems zugreifen zu können!"), actions: [ new FlatButton( child: new Text("Close"), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, ); return; } Map data = await FlutterSmartconfig.getConnectedWiFiInfo(); setState(() { _ssidFilter.text = data["ssid"]; _bssidFilter.text = data["bssid"]; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: _isLoading ? Container( child: Center( child: CircularProgressIndicator( valueColor: AlwaysStoppedAnimation(Colors.lightBlue), ), ), color: Colors.white.withOpacity(0.8), ) : new Container( padding: new EdgeInsets.all(10.0), child: new Column( mainAxisAlignment: MainAxisAlignment.center, children: [ new Container(height: 10), new Container( child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ Text("ESP Touch v0.3.7.0"), new TextField( controller: _ssidFilter, decoration: new InputDecoration(labelText: 'ssid'), ), new TextField( controller: _bssidFilter, decoration: new InputDecoration(labelText: 'bssid'), ), RaisedButton( child: Text('Get Connected WiFi details'), onPressed: _getConnectedWiFiInfo, ) ])), new Container( child: new TextField( controller: _passwordFilter, decoration: new InputDecoration(labelText: 'Password'), ), ), new RaisedButton( child: new Text('Configure ESP'), onPressed: _configureEsp, ), ], ))) // This trailing comma makes auto-formatting nicer for build methods. ); } }