Reputation:
Problem I am trying to add a logout image icon in appbar of flutter screen. I have created a asset folder and created directories images/icons/ and placed icons in them. I have mentioned them in pubspec.yaml file. I tried to implement a asset image in appbar but its not working.
Code
pubspe.yaml
name: mtrack_notifications
description: Flutter application for MTrack Notifications
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
http: ^0.11.3+16
shared_preferences: "^0.4.2"
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://www.dartlang.org/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
assets:
- assets/images/icons/like.png
- assets/images/icons/logout.png
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.io/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.io/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.io/custom-fonts/#from-packages
Click to see the IDE screenshot here
Appbar code
@override
Widget build(BuildContext context) {
//build a form widget using the form key we created above
return new Scaffold(
appBar: new AppBar(
title: new Text(StringRef.appName),
actions: [
new Center(
child:new Text(
userName,
textScaleFactor: 1.5,
style: new TextStyle(
fontSize: 12.0,
color: Colors.white,
),
)),
new IconButton(
icon: new Icon(Icons.close),
tooltip: 'Closes application',
onPressed: () => exit(0),
),
new IconButton(
icon: new Image.asset('images/icons/logout.png'),
tooltip: 'Closes application',
onPressed: () => exit(0),
),
],
),
Upvotes: 37
Views: 103938
Reputation: 1
You can try with a below solution
Scaffold(
appBar: appBarWidget(),
);
PreffredSizedWidget appBarWidget() {
return AppBar(
title:Text(''),
actions: [
IconButton(
icon: Image.asset(AppImages.logoutImg),
onPressed: () {
// To do
},
),
],
),
}
Define all appImages like a below :
class AppImages {
// Base ImagePath
static const String baseImagePath = AppConstants.baseImagePath;
static const String profileImg = '$baseImagePath/profile.jpg';
}
Upvotes: 0
Reputation: 1
you can fix path:
From icon: Image.asset('assets/images/icons/logout.png'),
To: icon: Image.asset('images/icons/logout.png'),
will be like this:
Scaffold(
appBar: AppBar(
actions: [
IconButton(
icon: Image.asset('images/icons/logout.png'),
onPressed: () => exit(0),
),
],
),
)
Upvotes: 0
Reputation: 107
you should give 2 space before '-' and 1 space after '-' for image location specification.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
assets:
- assets/images/icons/like.png
- assets/images/icons/logout.png
Upvotes: 2
Reputation: 215
its working all "icon : " properties
icon: ImageIcon(AssetImage('images/list.png')),
child: BottomNavigationBar(
//add background color
backgroundColor: PrimaryColor,
type: BottomNavigationBarType.fixed,
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: ImageIcon(AssetImage('images/list.png')),
label: 'List',
),
BottomNavigationBarItem(
icon: Icon(Icons.business),
label: 'Consultation',
),
BottomNavigationBarItem(
icon: Icon(Icons.school),
label: 'Lab',
),
],
currentIndex: _selectedIndex,
selectedItemColor: Colors.white,
onTap: _onItemTapped,
),
Upvotes: 2
Reputation: 6033
According to Flutter Documentation you need to include the full path like specified in pubspec.yaml
of the asset in order to load it:
Image.asset('assets/images/icons/logout.png')
Upvotes: 5
Reputation: 15789
The problem is in your path you have supplied to your IconButton
.
It should be like this.
Scaffold(
appBar: AppBar(
actions: [
IconButton(
icon: Image.asset('assets/images/icons/logout.png'),
onPressed: () => exit(0),
),
],
),
)
Upvotes: 69
Reputation: 928
dont try to register all of your images in pubspec.yaml
if you place the image inside folders folder, then you should register all folder. like this
you put an image : hero.png in folder Images inside folder Assets. Assets>Images>hero.png
then you should write them in 'pubspec.yaml' under: 'flutter: assets: -Assets/Images/hero.png '
Upvotes: 1