A little widget for picking durations. Heavily inspired from the Material Design time picker widget.
Example Usage:
dependencies: flutter_duration_picker: "^1.0.0"
import 'package:flutter/material.dart'; import 'package:flutter_duration_picker/flutter_duration_picker.dart'; void main() => runApp(new MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( title: 'Duration Picker Demo', theme: new ThemeData( primarySwatch: Colors.blue, ), home: new MyHomePage(title: 'Duration Picker Demo'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => new _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { Duration _duration = Duration(hours: 0, minutes: 0); @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text(widget.title), ), body: new Center( child: new Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ new Expanded( // Use it from the context of a stateful widget, passing in // and saving the duration as a state variable. child: DurationPicker( duration: _duration, onChange: (val) { this.setState(() => _duration = val); }, snapToMins: 5.0, )) ], ), ), floatingActionButton: Builder( builder: (BuildContext context) => new FloatingActionButton( onPressed: () async { // Use it as a dialog, passing in an optional initial time // and returning a promise that resolves to the duration // chosen when the dialog is accepted. Null when cancelled. Duration resultingDuration = await showDurationPicker( context: context, initialTime: new Duration(minutes: 30), ); Scaffold.of(context).showSnackBar(new SnackBar( content: new Text("Chose duration: $resultingDuration"))); }, tooltip: 'Popup Duration Picker', child: new Icon(Icons.add), )), ); } }
