Example of AlertDialog widgets used to pick colors.
// MIT License | |
// | |
// Copyright (c) 2018 fuyumi | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a copy | |
// of this software and associated documentation files (the "Software"), | |
// to deal in the Software without restriction, including without limitation | |
// the rights to use, copy, modify, merge, publish, distribute, sublicense, | |
// and/or sell copies of the Software, and to permit persons to whom | |
// the Software is furnished to do so, subject to the following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included in | |
// all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, | |
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | |
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | |
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE | |
// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
// © 2020 GitHub, Inc. | |
// Source: https://github.com/mchome/flutter_colorpicker/blob/master/example/lib/main.dart | |
// Package: https://pub.dev/packages/flutter_colorpicker | |
import 'package:flutter/material.dart'; | |
import 'package:flutter_colorpicker/flutter_colorpicker.dart'; | |
import 'package:flutter_colorpicker/material_picker.dart'; | |
import 'package:flutter_colorpicker/block_picker.dart'; | |
import 'package:flutter_colorpicker/utils.dart'; | |
void main() => runApp(MaterialApp(home: MyApp())); | |
class MyApp extends StatefulWidget { | |
@override | |
State<StatefulWidget> createState() => _MyAppState(); | |
} | |
class _MyAppState extends State<MyApp> { | |
Color currentColor = Colors.amber; | |
@override | |
Widget build(BuildContext context) { | |
return DefaultTabController( | |
length: 3, | |
child: Scaffold( | |
appBar: AppBar( | |
title: Text('Flutter Color Picker Example'), | |
bottom: TabBar( | |
tabs: <Widget>[ | |
const Tab(text: 'HSV'), | |
const Tab(text: 'Material'), | |
const Tab(text: 'Block'), | |
], | |
), | |
), | |
body: TabBarView( | |
physics: const NeverScrollableScrollPhysics(), | |
children: <Widget>[ | |
Center( | |
child: RaisedButton( | |
elevation: 3.0, | |
onPressed: () { | |
showDialog( | |
context: context, | |
builder: (BuildContext context) { | |
return AlertDialog( | |
titlePadding: const EdgeInsets.all(0.0), | |
contentPadding: const EdgeInsets.all(0.0), | |
shape: RoundedRectangleBorder( | |
borderRadius: | |
BorderRadius.all(Radius.circular(16.0))), | |
content: SingleChildScrollView( | |
child: ColorPicker( | |
pickerColor: currentColor, | |
onColorChanged: (color) { | |
setState(() => currentColor = color); | |
}, | |
colorPickerWidth: 300.0, | |
pickerAreaHeightPercent: 0.7, | |
enableAlpha: true, | |
displayThumbColor: true, | |
enableLabel: true, | |
paletteType: PaletteType.hsv, | |
), | |
), | |
); | |
}, | |
); | |
}, | |
child: const Text('Change me'), | |
color: currentColor, | |
textColor: useWhiteForeground(currentColor) | |
? const Color(0xffffffff) | |
: const Color(0xff000000), | |
), | |
), | |
Center( | |
child: RaisedButton( | |
elevation: 3.0, | |
onPressed: () { | |
showDialog( | |
context: context, | |
builder: (BuildContext context) { | |
return AlertDialog( | |
titlePadding: const EdgeInsets.all(0.0), | |
contentPadding: const EdgeInsets.all(0.0), | |
shape: RoundedRectangleBorder( | |
borderRadius: | |
BorderRadius.all(Radius.circular(16.0))), | |
content: SingleChildScrollView( | |
child: MaterialPicker( | |
pickerColor: currentColor, | |
onColorChanged: (color) { | |
setState(() => currentColor = color); | |
}, | |
enableLabel: true, | |
), | |
), | |
); | |
}, | |
); | |
}, | |
child: const Text('Change me'), | |
color: currentColor, | |
textColor: useWhiteForeground(currentColor) | |
? const Color(0xffffffff) | |
: const Color(0xff000000), | |
), | |
), | |
Center( | |
child: RaisedButton( | |
elevation: 3.0, | |
onPressed: () { | |
showDialog( | |
context: context, | |
builder: (BuildContext context) { | |
return AlertDialog( | |
title: Text('Select a color'), | |
shape: RoundedRectangleBorder( | |
borderRadius: | |
BorderRadius.all(Radius.circular(16.0))), | |
content: SingleChildScrollView( | |
child: BlockPicker( | |
pickerColor: currentColor, | |
onColorChanged: (color) { | |
setState(() => currentColor = color); | |
}, | |
), | |
), | |
); | |
}, | |
); | |
}, | |
child: const Text('Change me'), | |
color: currentColor, | |
textColor: useWhiteForeground(currentColor) | |
? const Color(0xffffffff) | |
: const Color(0xff000000), | |
), | |
), | |
], | |
), | |
), | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment