1
I have a problem when it comes time to set the state
of DatePicker
in Flutter.
The same returns me the error:
Another Exception was thrown: Failed assertion: Boolean Expression must not be null
Code:
import 'dart:async';
import 'package:flutter/material.dart';
import 'main.dart';
class RegisterPage extends StatefulWidget {
@override
_RegisterPage createState() => _RegisterPage();
}
class _RegisterPage extends State<RegisterPage> {
DateTime data;
final _formKey = GlobalKey<FormState>();
Future<Null> _nascimento(BuildContext context) async {
final DateTime selecionado = await showDatePicker(
context: context,
initialDate: data == null ? DateTime.now() : data,
firstDate: DateTime(1950),
lastDate: DateTime.now()
);
if(selecionado != null && selecionado != data) {
print('Data: ${selecionado.toString()}');
setState(() {
data = selecionado;
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Column(
children: <Widget>[
ClipPath(
clipper: Topo(),
child: Container(
width: double.infinity,
height: 250,
decoration: BoxDecoration(
color: Colors.green,
image: DecorationImage(
image: AssetImage('assets/pngs/recycle.png'),
fit: BoxFit.cover)),
),
),
Container(
width: 160,
height: 160,
transform: Matrix4.translationValues(0.0, -140.0, 0.0),
child: Material(
elevation: 5.0,
borderRadius: BorderRadius.circular(100.0),
// color: Colors.white,
child: CircleAvatar(
backgroundImage: AssetImage('assets/jpgs/no_avatar.jpg'),
),
),
),
Container(
transform: Matrix4.translationValues(0.0, -100.0, 0.0),
child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
margin: const EdgeInsets.only(top: 10.0, bottom: 10.0),
child: Material(
borderRadius: BorderRadius.circular(10.0),
elevation: 5.0,
child: TextFormField(
decoration: InputDecoration(
prefixIcon: Padding(
padding: EdgeInsets.all(0.0),
child: Icon(
Icons.perm_identity,
color: Colors.green,
size: 26,
),
),
labelText: 'Nome',
labelStyle: TextStyle(fontSize: 16),
border: OutlineInputBorder(
borderSide: BorderSide(
width: 0, style: BorderStyle.none),
borderRadius: const BorderRadius.all(
const Radius.circular(10.0),
),
),
),
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
},
),
),
),
Container(
margin: const EdgeInsets.only(top: 10.0, bottom: 10.0),
child: Material(
borderRadius: BorderRadius.circular(10.0),
elevation: 5.0,
child: TextField(
onTap: () => _nascimento(context),
decoration: InputDecoration(
prefixIcon: Padding(
padding: EdgeInsets.all(0.0),
child: Icon(
Icons.date_range,
color: Colors.green,
size: 26,
),
),
labelText: '${data.toString()}',
labelStyle: TextStyle(fontSize: 16),
border: OutlineInputBorder(
borderSide: BorderSide(
width: 0, style: BorderStyle.none),
borderRadius: const BorderRadius.all(
const Radius.circular(10.0),
),
),
),
),
),
),
Container(
margin: const EdgeInsets.only(top: 10.0, bottom: 10.0),
child: Material(
borderRadius: BorderRadius.circular(10.0),
elevation: 5.0,
child: TextFormField(
decoration: InputDecoration(
prefixIcon: Padding(
padding: EdgeInsets.all(0.0),
child: Icon(
Icons.email,
color: Colors.green,
size: 26,
),
),
labelText: 'Email',
labelStyle: TextStyle(fontSize: 16),
border: OutlineInputBorder(
borderSide: BorderSide(
width: 0, style: BorderStyle.none),
borderRadius: const BorderRadius.all(
const Radius.circular(10.0),
),
),
),
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
},
),
),
),
Container(
margin: const EdgeInsets.only(top: 10.0, bottom: 10.0),
child: Material(
borderRadius: BorderRadius.circular(10.0),
elevation: 5.0,
child: TextFormField(
decoration: InputDecoration(
prefixIcon: Padding(
padding: EdgeInsets.all(0.0),
child: Icon(
Icons.lock,
color: Colors.green,
size: 26,
),
),
labelText: 'Senha',
labelStyle: TextStyle(fontSize: 16),
border: OutlineInputBorder(
borderSide: BorderSide(
width: 0, style: BorderStyle.none),
borderRadius: const BorderRadius.all(
const Radius.circular(10.0),
),
),
),
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
},
),
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0),
child: Container(
color: Colors.transparent,
width: MediaQuery.of(context).size.width,
height: 50,
child: FlatButton(
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(10.0),
),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => LoginPage()),
);
},
color: Colors.green,
child: Text(
"Cadastrar",
style: TextStyle(
color: Colors.white,
fontSize: 16.0,
),
),
),
)),
],
),
)
],
),
)),
],
),
),
);
}
}
class Topo extends CustomClipper<Path> {
@override
Path getClip(Size size) {
var path = Path();
path.lineTo(0, size.height - 100);
path.quadraticBezierTo(
size.width / 2, size.height, size.width, size.height - 100);
path.lineTo(size.width, 0);
path.close();
return path;
}
@override
bool shouldReclip(CustomClipper<Path> oldClipper) {
return null;
}
}
After changing the date I get the following error:
I/flutter ( 4615): Date: 2019-07-09 00:00:00.000 I/flutter ( 4615): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════ I/flutter ( 4615): The following assertion was thrown building I/flutter ( 4615): Rawgesturedetector-[Labeledglobalkey#605fc](state: I/flutter ( 4615): Rawgesturedetectorstate#6184a(Gestures: [vertical drag], behavior: Paque)): I/flutter ( 4615): Failed assertion: Boolean Expression must not be null I/flutter ( 4615): I/flutter ( 4615): Either the assertion indicates an error in the framework itself, or we should provide substantially I/flutter ( 4615): more information in this error message to help you determine and fix the underlying cause. I/flutter ( 4615): In either case, Please report this assertion by filing a bug on Github: I/flutter ( 4615): https://github.com/flutter/flutter/issues/new?template=BUG.md I/flutter ( 4615): I/flutter ( 4615): When the Exception was thrown, this was the stack: I/flutter ( 4615): #0 _Rendercustomclip.Clipper= (package:flutter/src/Rendering/proxy_box.Dart:1171:20) I/flutter ( 4615): #1 Clippath.updateRenderObject (package:flutter/src/widgets/basic.Dart:797:18) I/flutter ( 4615): #2 Renderobjectelement.update (package:flutter/src/widgets/framework.Dart:4510:12) I/flutter ( 4615): #3 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4881:11) I/flutter ( 4615): #4 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #5 Renderobjectelement.updateChildren (package:flutter/src/widgets/framework.Dart:4601:32) I/flutter ( 4615): #6 Multichildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4992:17) I/flutter ( 4615): #7 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #8 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4883:14) I/flutter ( 4615): #9 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #10 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4883:14) I/flutter ( 4615): #11 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #12 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4883:14) I/flutter ( 4615): #13 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #14 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4883:14) I/flutter ( 4615): #15 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #16 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4883:14) I/flutter ( 4615): #17 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #18 Componentelement.performRebuild (package:flutter/src/widgets/framework.Dart:3750:16) I/flutter ( 4615): #19 Element.rebuild (package:flutter/src/widgets/framework.Dart:3565:5) I/flutter ( 4615): #20 Statefulelement.update (package:flutter/src/widgets/framework.Dart:3894:5) I/flutter ( 4615): #21 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #22 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4883:14) I/flutter ( 4615): #23 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #24 Componentelement.performRebuild (package:flutter/src/widgets/framework.Dart:3750:16) I/flutter ( 4615): #25 Element.rebuild (package:flutter/src/widgets/framework.Dart:3565:5) I/flutter ( 4615): #26 Proxyelement.update (package:flutter/src/widgets/framework.Dart:4006:5) I/flutter ( 4615): #27 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #28 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4883:14) I/flutter ( 4615): #29 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #30 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4883:14) I/flutter ( 4615): #31 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #32 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4883:14) I/flutter ( 4615): #33 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #34 Singlechildrenderobjectelement.update (package:flutter/src/widgets/framework.Dart:4883:14) I/flutter ( 4615): #35 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #36 Componentelement.performRebuild (package:flutter/src/widgets/framework.Dart:3750:16) I/flutter ( 4615): #37 Element.rebuild (package:flutter/src/widgets/framework.Dart:3565:5) I/flutter ( 4615): #38 Statelesselement.update (package:flutter/src/widgets/framework.Dart:3796:5) I/flutter ( 4615): #39 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #40 Componentelement.performRebuild (package:flutter/src/widgets/framework.Dart:3750:16) I/flutter ( 4615): #41 Element.rebuild (package:flutter/src/widgets/framework.Dart:3565:5) I/flutter ( 4615): #42 Statefulelement.update (package:flutter/src/widgets/framework.Dart:3894:5) I/flutter ( 4615): #43 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #44 Componentelement.performRebuild (package:flutter/src/widgets/framework.Dart:3750:16) I/flutter ( 4615): #45 Element.rebuild (package:flutter/src/widgets/framework.Dart:3565:5) I/flutter ( 4615): #46 Statefulelement.update (package:flutter/src/widgets/framework.Dart:3894:5) I/flutter ( 4615): #47 Element.updateChild (package:flutter/src/widgets/framework.Dart:2753:15) I/flutter ( 4615): #48 Componentelement.performRebuild (package:flutter/src/widgets/framework.Dart:3750:16) I/flutter ( 4615): #49 Element.rebuild (package:flutter/src/widgets/framework.Dart:3565:5) I/flutter ( 4615): #50 Proxyelement.update.
Does anyone know how I can solve?
Which stacktrace is complete? Which line is the error occurring? How about a complete executable code for testing?
– Julio Henrique Bitencourt
@Juliohenriquebitencourt entered the full code in the question
– Gabriel Reis