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

outdated

This dart package gives access to ios reminders. Reminders are sorted into lists with one list being the default. This package gives read and delete access.

example/lib/main.dart

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:reminders/reminders.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<dynamic> _allLists = [];
  String _active;
  bool _access = false;

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

  Future<void> getLists() async {
    bool access = await Reminders.hasAccess;
    String defaultList = await Reminders.defaultList;
    List<dynamic> allLists = await Reminders.allLists;

    if (mounted)
      setState(() {
        _allLists = allLists;
        _active = defaultList;
        _access = access;
      });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              const Text('iOS Reminders example app'),
              Icon(
                _access ? Icons.check_box : Icons.close,
                size: 40.0,
                color: _access ? Colors.white : Colors.red,
              ),
            ],
          ),
        ),
        body: Column(children: [
          SingleChildScrollView(
            scrollDirection: Axis.horizontal,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceAround,
              children: _allLists
                  .map((list) => GestureDetector(
                      onTap: () {
                        setState(() {
                          _active = list as String;
                        });
                      },
                      child: ListWidget(list, active: list == _active)))
                  .toList(),
            ),
          ),
          Flexible(
            fit: FlexFit.tight,
            child: FutureBuilder(
                future: Reminders.getReminders(_active),
                builder: (context, dataSnapshot) {
                  if (dataSnapshot.connectionState == ConnectionState.waiting)
                    return Center(child: CircularProgressIndicator());

                  if (dataSnapshot.hasError) {
                    print(dataSnapshot.error);
                    return Text(dataSnapshot.error);
                  }
                  return ListView.builder(
                    itemCount: dataSnapshot.data.length,
                    itemBuilder: (context, index) => Dismissible(
                      onDismissed: (direction) => setState(() {
                        Reminders.deleteReminder(dataSnapshot.data[index].id);
                      }),
                      key: Key(dataSnapshot.data[index].title),
                      child: ReminderWidget(dataSnapshot.data[index]),
                    ),
                  );
                }),
          ),
        ]),
      ),
    );
  }
}

class ReminderWidget extends StatelessWidget {
  final Reminder reminder;
  ReminderWidget(this.reminder);

  Icon _priorityIcon(int priority) {
    switch (priority) {
      case 0:
        return Icon(Icons.trending_flat);
      case 1:
        return Icon(Icons.low_priority);
      case 5:
        return Icon(Icons.looks_two);
      case 9:
        return Icon(Icons.priority_high);
      default:
        return Icon(Icons.question_answer);
    }
  }

  @override
  Widget build(BuildContext context) {
    return ListTile(
      leading: _priorityIcon(reminder.priority),
      title: Text(reminder.title),
      trailing: reminder.isCompleted
          ? Icon(Icons.check_box_outlined)
          : Icon(Icons.check_box_outline_blank),
      subtitle: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          reminder.notes != ""
              ? Text(reminder.notes)
              : Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    reminder.dueDate != ""
                        ? Text("Due: ${reminder.dueDate}")
                        : Text(""),
                    reminder.isCompleted
                        ? Text(
                            "Completed: ${reminder.completionDate.split(" ")[0]}")
                        : reminder.startDate != ""
                            ? Text("Started: ${reminder.startDate}")
                            : Text("")
                  ],
                ),
          reminder.notes != ""
              ? Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    reminder.dueDate != ""
                        ? Text("Due: ${reminder.dueDate}")
                        : Text(""),
                    reminder.isCompleted
                        ? Text(
                            "Completed: ${reminder.completionDate.split(" ")[0]}")
                        : reminder.startDate != ""
                            ? Text("Started: ${reminder.startDate}")
                            : Text("")
                  ],
                )
              : Text(""),
        ],
      ),
      isThreeLine: reminder.notes != "",
    );
  }
}

class ListWidget extends StatelessWidget {
  final dynamic list;
  final bool active;

  ListWidget(this.list, {this.active});

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(18.0),
      child: Text(
        list as String,
        style: TextStyle(
            fontSize: 18.0,
            fontWeight: FontWeight.bold,
            decoration: active ? TextDecoration.underline : null),
      ),
    );
  }
}
12
likes
30
pub points
69%
popularity

Publisher

unverified uploader

This dart package gives access to ios reminders. Reminders are sorted into lists with one list being the default. This package gives read and delete access.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (LICENSE)

Dependencies

flutter

More

Packages that depend on reminders