simple_sms 0.0.2 copy "simple_sms: ^0.0.2" to clipboard
simple_sms: ^0.0.2 copied to clipboard

Plugin for simple sending sms

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:simple_sms/simple_sms.dart';

void main() => runApp(SimpleSmsExampleApp());

class SimpleSmsExampleApp extends StatefulWidget {
  @override
  _SimpleSmsExampleAppState createState() => _SimpleSmsExampleAppState();
}

class _SimpleSmsExampleAppState extends State<SimpleSmsExampleApp> {
  final contactTextFieldController = TextEditingController();
  final smsTextFieldController = TextEditingController();
  final List<String> contacts = [];
  String recipients;
  final RegExp exp = RegExp(r'([(+]*[0-9]+[()+. -]*)');
  static const double defaultPadding = 8.0;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Simple sms example app'),
        ),
        body: Builder(
          builder: (BuildContext context) {
            return Container(
              child: Center(
                child: Column(
                  children: <Widget>[
                    Padding(
                      padding: const EdgeInsets.all(defaultPadding),
                      child: Row(
                        children: <Widget>[
                          Flexible(
                            child: TextField(
                              keyboardType: TextInputType.phone,
                              decoration:
                                  InputDecoration(hintText: '+420123456789'),
                              controller: contactTextFieldController,
                            ),
                          ),
                          Padding(
                            padding: const EdgeInsets.all(defaultPadding),
                            child: RaisedButton(
                              onPressed: () {
                                if (_validateContact(
                                    //whole this onPressed is terrible :/ didnt figure out how to display Snackbar outside of Build method
                                    contactTextFieldController.text)) {
                                  _addContact(contactTextFieldController.text);
                                  Scaffold.of(context).showSnackBar(SnackBar(
                                        content: Text('Contact added'),
                                      ));
                                } else {
                                  Scaffold.of(context).showSnackBar(SnackBar(
                                        content: Text(
                                            'Contact contains invalid characters'),
                                      ));
                                }
                              },
                              child: Text('add contact'),
                            ),
                          ),
                        ],
                      ),
                    ),
                    contacts.length > 0 ?
                    Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Row(
                        children: <Widget>[
                          Flexible(
                              child: Text(
                            'Recipients: \n $recipients',
                            overflow: TextOverflow.ellipsis,
                                maxLines:  10,
                          )),
                        ],
                      ),
                    ) : Container(),
                    Padding(
                      padding: const EdgeInsets.all(defaultPadding),
                      child: Row(
                        children: <Widget>[
                          Flexible(
                            child: TextField(
                              controller: smsTextFieldController,
                              decoration: InputDecoration(hintText: 'SMS body'),
                              maxLines: null,
                              keyboardType: TextInputType.multiline,
                            ),
                          ),
                        ],
                      ),
                    ),
                    Padding(
                      padding: const EdgeInsets.all(defaultPadding),
                      child: Row(
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: <Widget>[
                          Center(
                            child: RaisedButton(
                              onPressed: () {
                                _sendSms(contacts, smsTextFieldController.text);
                              },
                              child: Text('Send SMS'),
                            ),
                          )
                        ],
                      ),
                    )
                  ],
                ),
              ),
            );
          },
        ),
      ),
    );
  }

  _addContact(String contact) {
    contacts.add(contact);
    contactTextFieldController.text = '';
    setState(() {
      recipients = contacts.join(', \n');
    });
  }

  bool _validateContact(String contact) {
    if (exp.firstMatch(contact) == null) {
      return false;
    } else {
      return true;
    }
  }

  _sendSms(List<String> contacts, String smsBody) async {
    final SimpleSms simpleSms = SimpleSms();
    simpleSms.sendSms(contacts, smsBody);
  }
}
0
likes
30
pub points
0%
popularity

Publisher

unverified uploader

Plugin for simple sending sms

Repository (GitHub)
View/report issues

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on simple_sms