Flutterアプリを初めて開発しています。画像の追加に問題があります。私は以下の質問があります:
試したこと:
assets:
- images/lake.jpg
pubspec.ymal内:
完全なファイル:
name: my_flutter_app
description: A new Flutter application.
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true,
assets:
- images/lake.jpg
エラーログ:
#/properties/flutter/properties/uses-material-design: type: wanted [boolean] got true,
Error detected in pubspec.yaml:
Error building assets
FAILURE: Build failed with an exception.
* Where:
Script '/home/abc/Downloads/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 435
* What went wrong:
Execution failed for task ':app:flutterBuildDebug'.
> Process 'command '/home/abc/Downloads/flutter/bin/flutter'' finished with non-zero exit value 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
Finished with error: Gradle build failed: 1
私のmain.Dartコード:
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.Dart';
// Uncomment lines 7 and 10 to view the visual layout at runtime.
//import 'package:flutter/rendering.Dart' show debugPaintSizeEnabled;
void main() {
//debugPaintSizeEnabled = true;
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
Widget titleSection = new Container(
padding: const EdgeInsets.all(32.0),
child: new Row(
children: [
new Expanded(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
new Container(
padding: const EdgeInsets.only(bottom: 8.0),
child: new Text(
'Oeschinen Lake Campground',
style: new TextStyle(
fontWeight: FontWeight.bold,
),
),
),
new Text(
'Kandersteg, Switzerland',
style: new TextStyle(
color: Colors.grey[500],
),
),
],
),
),
new Icon(
Icons.star,
color: Colors.red[500],
),
new Text('41'),
],
),
);
Column buildButtonColumn(IconData icon, String label) {
Color color = Theme.of(context).primaryColor;
return new Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
new Icon(icon, color: color),
new Container(
margin: const EdgeInsets.only(top: 8.0),
child: new Text(
label,
style: new TextStyle(
fontSize: 12.0,
fontWeight: FontWeight.w400,
color: color,
),
),
),
],
);
}
Widget buttonSection = new Container(
child: new Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildButtonColumn(Icons.call, 'CALL'),
buildButtonColumn(Icons.near_me, 'ROUTE'),
buildButtonColumn(Icons.share, 'SHARE'),
],
),
);
Widget textSection = new Container(
padding: const EdgeInsets.all(32.0),
child: new Text(
'''
Lake Oeschinen lies at the foot of the Blüemlisalp in the Bernese Alps. Situated 1,578 meters above sea level, it is one of the larger Alpine Lakes. A gondola ride from Kandersteg, followed by a half-hour walk through pastures and pine forest, leads you to the lake, which warms to 20 degrees Celsius in the summer. Activities enjoyed here include rowing, and riding the summer toboggan run.
''',
softWrap: true,
),
);
return new MaterialApp(
title: 'Flutter Demo',
home: new Scaffold(
appBar: new AppBar(
title: new Text('Top Lakes'),
),
body: new ListView(
children: [
new Image.asset(
'images/lake.jpg',
width: 600.0,
height: 240.0,
fit: BoxFit.cover,
),
titleSection,
buttonSection,
textSection,
],
),
),
);
}
}
私はこのチュートリアルを参照していますhttps://flutter.io/tutorials/layout/
また、私はこれのためのオプションを見つけることができないので、フラッターできれいに再構築するためのツールがありますかと尋ねたいです。
任意の助けをいただければ幸いです。
ありがとうございました !
エラーは冗長な,
が原因だと思います
flutter:
uses-material-design: true, # <<< redundant , at the end of the line
assets:
- images/lake.jpg
pubspec.yaml
ファイルを含むディレクトリにassets
フォルダーを作成し、そこにimages
を移動して使用することもお勧めします
flutter:
uses-material-design: true
assets:
- assets/images/lake.jpg
assets
ディレクトリには、他の場所にアセットを配置した場合にはない追加のIDEサポートが追加されます。
assets/images
フォルダーを作成しますpubspec.yaml
ファイルと同じフォルダーに配置する必要があります。assets
またはimages
と呼ぶ必要はありません。 images
をサブフォルダーにする必要さえありません。ただし、使用する名前は、pubspec.yaml
ファイルに登録する名前です。assets/images
にコピーするだけです。たとえば、lake.jpg
の相対パスはassets/images/lake.jpg
になります。pubspec.yaml
に登録しますpubspec.yaml
ファイルを開きます。次のようにassets
サブセクションをflutter
セクションに追加します。
flutter:
assets:
- assets/images/lake.jpg
含める画像が複数ある場合は、ファイル名を省略し、ディレクトリ名のみを使用できます(最後の/
を含めます)。
flutter:
assets:
- assets/images/
Image.asset('assets/images/lake.jpg')
を使用して、画像ウィジェットでアセットを取得します。main.Dart
ファイル全体は次のとおりです。
import 'package:flutter/material.Dart';
void main() => runApp(MyApp());
// the root widget of our application
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Image from assets"),
),
body: Image.asset('assets/images/lake.jpg'), // <--- image here
),
);
}
}
pubspec.yamlに変更を加える場合、特にアセットを追加する場合、アプリを完全に停止して再起動する必要があることがよくあります。そうしないと、クラッシュします。
アプリを実行すると、次のようになります。
問題はpubspec.yaml
にあります。ここでは最後のコンマを削除する必要があります。
uses-material-design: true,
アセットディレクトリを作成する必要はなく、その下に画像ディレクトリを作成してから画像を配置します。より良いのは、pubspec.yamlが存在するプロジェクト内にImagesディレクトリを作成し、その中に画像を配置し、チュートリアル/ドキュメントに示されているようにその画像にアクセスすることです。
アセット:-images/lake.jpg // pubspec.yaml内
アプリに画像を配置する別の方法(私にとってはそのように機能しました):
1-アセット/画像フォルダーを作成します
2-画像を新しいフォルダーに追加します
3-pubspec.yamlにアセットフォルダーを登録する
4-このコードを使用:
import 'package:flutter/material.Dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
var assetsImage = new AssetImage('assets/images/mountain.jpg'); //<- Creates an object that fetches an image.
var image = new Image(image: assetsImage, fit: BoxFit.cover); //<- Creates a widget that displays an image.
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Climb your mountain!"),
backgroundColor: Colors.amber[600], //<- background color to combine with the picture :-)
),
body: Container(child: image), //<- place where the image appears
),
);
}
}
Pubspec.yamlファイルにアセットディレクトリを追加するときは、スペースにより注意を払う
これは間違っています
flutter:
assets:
- assets/images/lake.jpg
これが正しい方法です、
flutter:
assets:
- assets/images/