I' getting this error in my code when I'm trying to upload image. I'm new to flutter and struggling with this error. I'm developing a profile detail update section.
how to correct this error in my code. appreciate your help on this.
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'dart:convert';
import 'package:http/http.dart' ;
class CreateProfile extends StatefulWidget {
CreateProfile({required Key key}) : super(key: key);
@override
_CreateProfileState createState() => _CreateProfileState();
}
class _CreateProfileState extends State<CreateProfile> {
bool circular = false;
late PickedFile _imageFile;
final ImagePicker _picker = ImagePicker();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Form(
child: ListView(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 30),
children: <Widget>[
imageProfile(),
SizedBox(
height: 20,
),
nameTextField(),
SizedBox(
height: 20,
),
professionTextField(),
SizedBox(
height: 20,
),
dobField(),
SizedBox(
height: 20,
),
titleTextField(),
SizedBox(
height: 20,
),
aboutTextField(),
SizedBox(
height: 20,
),
],
),
),
);
}
Widget imageProfile() {
return Center(
child: Stack(children: <Widget>[
CircleAvatar(
radius: 80.0,
backgroundImage: _imageFile == null
? AssetImage("assets/pic.jpg")
:FileImage(file(_imageFile.path)),
),
Positioned(
bottom: 20.0,
right: 20.0,
child: InkWell(
onTap: () {
showModalBottomSheet(
context: context,
builder: ((builder) => bottomSheet()),
);
},
child: Icon(
Icons.camera_alt,
color: Colors.teal,
size: 28.0,
),
),
),
]),
);
}
Widget bottomSheet() {
return Container(
height: 100.0,
width: MediaQuery.of(context).size.width,
margin: EdgeInsets.symmetric(
horizontal: 20,
vertical: 20,
),
child: Column(
children: <Widget>[
Text(
"Choose Profile photo",
style: TextStyle(
fontSize: 20.0,
),
),
SizedBox(
height: 20,
),
Row(mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[
TextButton.icon(
icon: Icon(Icons.camera),
onPressed: () {
takePhoto(ImageSource.camera);
},
label: Text("Camera"),
),
TextButton.icon(
icon: Icon(Icons.image),
onPressed: () {
takePhoto(ImageSource.gallery);
},
label: Text("Gallery"),
),
])
],
),
);
}
void takePhoto(ImageSource source) async {
final pickedFile = await _picker.pickImage(
source: source,
);
setState(() {
_imageFile = pickedFile as PickedFile;
});
}
//starting text fields
Widget nameTextField() {
return TextFormField(
//controller: _name,
validator: (value) {
if (value!.isEmpty) return "Name can't be empty";
return null;
},
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.teal,
)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.orange,
width: 2,
)),
prefixIcon: Icon(
Icons.person,
color: Colors.green,
),
labelText: "Name",
helperText: "Name can't be empty",
hintText: "Dev Stack",
),
);
}
Widget professionTextField() {
return TextFormField(
//controller: _profession,
validator: (value) {
if (value!.isEmpty) return "Profession can't be empty";
return null;
},
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.teal,
)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.orange,
width: 2,
)),
prefixIcon: Icon(
Icons.person,
color: Colors.green,
),
labelText: "Profession",
helperText: "Profession can't be empty",
hintText: "Full Stack Developer",
),
);
}
Widget dobField() {
return TextFormField(
// controller: _dob,
validator: (value) {
if (value!.isEmpty) return "DOB can't be empty";
return null;
},
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.teal,
)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.orange,
width: 2,
)),
prefixIcon: Icon(
Icons.person,
color: Colors.green,
),
labelText: "Date Of Birth",
helperText: "Provide DOB on dd/mm/yyyy",
hintText: "01/01/2020",
),
);
}
Widget titleTextField() {
return TextFormField(
// controller: _title,
validator: (value) {
if (value!.isEmpty) return "Title can't be empty";
return null;
},
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.teal,
)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.orange,
width: 2,
)),
prefixIcon: Icon(
Icons.person,
color: Colors.green,
),
labelText: "Title",
helperText: "It can't be empty",
hintText: "Flutter Developer",
),
);
}
Widget aboutTextField() {
return TextFormField(
// controller: _about,
validator: (value) {
if (value!.isEmpty) return "About can't be empty";
return null;
},
maxLines: 4,
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.teal,
)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.orange,
width: 2,
)),
labelText: "About",
helperText: "Write about yourself",
hintText: "I am Dev Stack",
),
);
}
}
Cast AssetImage as ImageProvider should work. and also, _imageFile
is already a File
so there's no need for File(_imageFile.path)
. And btw it should be File
with a capital F, not file
CircleAvatar(
radius: 80.0,
backgroundImage: _imageFile == null
? AssetImage("assets/pic.jpg") as ImageProvider
: FileImage(_imageFile),
)
Casting its type solved the problem for me, for example:
CircleAvatar(
radius: 80.0,
backgroundImage: _imageFile == null
? AssetImage("assets/pic.jpg") as ImageProvider
:FileImage(_imageFile),
),
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.