aws_cognito_iot 1.0.0 copy "aws_cognito_iot: ^1.0.0" to clipboard
aws_cognito_iot: ^1.0.0 copied to clipboard

A new flutter plugin project.

example/lib/main.dart

import 'dart:async';
import 'dart:developer';

import 'package:aws_cognito_iot/aws_cognito_iot.dart';
import 'package:aws_cognito_iot/cognito/flutter_cognito_plugin.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';

void main() async {
  var dotenv = DotEnv();
  await dotenv.load(fileName: 'assets/.env');
  print(dotenv.env);

  print(await Cognito.initialize());
  if (!await Cognito.isSignedIn()) {
    print(await Cognito.signIn(dotenv.env['USERNAME'], dotenv.env['PASSWORD']));
  }
  log(await Cognito.getIdentityId());

  var device = AwsCognitoIot(
    endpoint: dotenv.env['ENDPOINT'],
    clientId: dotenv.env['CLIENT_ID'],
  );

  await device.attachPolicy(
    identityId: await Cognito.getIdentityId(),
    policyName: dotenv.env['POLICY_NAME'],
  );

  await device.connect();

  runApp(MyApp(device: device));
}

class MyApp extends StatefulWidget {
  final AwsCognitoIot device;

  const MyApp({Key key, @required this.device}) : super(key: key);

  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Padding(
          padding: const EdgeInsets.all(10),
          child: ListView(
            children: <Widget>[
              TextField(
                controller: topicControl,
                decoration: InputDecoration(labelText: "Topic"),
              ),
              TextField(
                controller: msgControl,
                decoration: InputDecoration(labelText: "Message"),
              ),
              ElevatedButton(
                child: Text("PUBLISH"),
                onPressed: () {
                  device.publishStr(msgControl.text, topic: topicControl.text);
                },
              ),
              ElevatedButton(
                child: Text("SUSCRIBE"),
                onPressed: onSubscribe,
              ),
              for (var msg in history)
                Text(
                  "<${msg.runtimeType} topic='${msg.topic}' asStr='${msg.asStr}'>",
                ),
            ],
          ),
        ),
      ),
    );
  }

  var phoneControl = TextEditingController();
  var passwordControl = TextEditingController();
  var topicControl = TextEditingController(text: 'demoTopic');
  var msgControl = TextEditingController(text: 'Hello World!');
  var history = <AWSIotMsg>[];

  AwsCognitoIot get device => widget.device;

  @override
  void initState() {
    super.initState();
    initAsyncState();
  }

  Future<void> initAsyncState() async {
    await for (var msg in device.messages) {
      setState(() {
        history.add(msg);
      });
    }
  }

  Future<void> onSubscribe() async {
    device.subscribe(topicControl.text);
  }
}
0
likes
20
pub points
11%
popularity

Publisher

unverified uploader

A new flutter plugin project.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

crypto, flutter, logging, mqtt_client, sigv4, typed_data

More

Packages that depend on aws_cognito_iot