您好,我正在尝试将ScollView放到我的应用程序中,但问题是我无法同时拥有ScrollView和Background图像,因此如果有人可以帮助我(在这里我放了背景图像,那么我该如何放置现在是scrollview吗?)我同时使用了2个,但不是两个都同时使用,我使用的scrollview是singleChildScrollView
import 'package:flutter/material.dart';
import 'package:audioplayers/audioplayers.dart';
import 'package:audioplayers/audio_cache.dart';
void main() {
runApp(new MaterialApp(
home: new MyApp(),
));
}
class MyApp extends StatefulWidget {
@override
_State createState() => _State();
}
AudioCache cache = new AudioCache(fixedPlayer: new AudioPlayer());
void PlayBest() {
cache.play('best.mp3');
}
void StopBest() {
cache.play('pro.mp3');
}
MediaQueryData queryData;
double lecran = queryData.size.width;
double loecran = queryData.size.height;
double ratio = queryData.textScaleFactor;
class MyImagePro extends StatelessWidget {
@override
Widget build(BuildContext context) {
var assetsImage = new AssetImage('assets/iconhd.png');
var image = new Image(image: assetsImage, width: MediaQuery.of(context).size.height/4.5, height: MediaQuery.of(context).size.height/4.5,);
return new Container(child: image,);
}}
class MyImagePro2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
var assetsImage = new AssetImage('assets/trumpfond.png');
var image = new Image(image: assetsImage, width: MediaQuery.of(context).size.height, height: MediaQuery.of(context).size.longestSide,);
return new Container(child: image,);
}}
class _State extends State<MyApp> {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Container(
decoration: new BoxDecoration(image: new DecorationImage(image: new AssetImage("assets/trumpfond.png"), fit: BoxFit.cover)),
child: new Column(
children: <Widget>[
new Row(
children: <Widget>[
new Padding( padding: EdgeInsets.only(top: 50.0)),
],
),
new Row(
children: <Widget>[
new Expanded(child: new FlatButton(onPressed: PlayBest, child: new MyImagePro(),),),
new Expanded(child: new FlatButton(onPressed: StopBest, child: new MyImagePro(),),),
],
),
new Row(
children: <Widget>[
new Padding( padding: EdgeInsets.only(left: MediaQuery.of(context).size.height/9)), // LEFT // TOP // RIGHT // BOTTOM //
new Text("Song 1"),
new Padding( padding: EdgeInsets.only(left: MediaQuery.of(context).size.height/4.2)),
new Text("Song 2"),
],
),
new Row(
children: <Widget>[
new Expanded(child: new FlatButton(onPressed: PlayBest, child: new MyImagePro(),),),
new Expanded(child: new FlatButton(onPressed: StopBest, child: new MyImagePro(),),),
],
),
new Row(
children: <Widget>[
new Padding( padding: EdgeInsets.only(left: MediaQuery.of(context).size.height/9)), // LEFT // TOP // RIGHT // BOTTOM //
new Text("Song 3"),
new Padding( padding: EdgeInsets.only(left: MediaQuery.of(context).size.height/4.2)),
new Text("Song 4"),
],
),
new Row(
children: <Widget>[
new Padding( padding: EdgeInsets.fromLTRB(0.0, 100.0, 0.0, 0.0)),
new Expanded(child: new FlatButton(onPressed: PlayBest, child: new MyImagePro(),),),
new Padding( padding: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 0.0)),
new Expanded(child: new FlatButton(onPressed: StopBest, child: new MyImagePro(),),),
],
),
new Row(
children: <Widget>[
new Padding( padding: EdgeInsets.fromLTRB(60.0, 10.0, 20.0, 0.0)), // LEFT // TOP // RIGHT // BOTTOM //
new Text("Song 1"),
new Padding( padding: EdgeInsets.fromLTRB(140.0, 10.0, 20.0, 0.0)),
new Text("Song 2"),
],
),
],
),
),);
}
}
答案 0 :(得分:3)
您可以使用Stack和SingleChildScrollView。
我希望以下内容对您有所帮助。
@override
Widget build(BuildContext context) {
return new Scaffold(
body: Stack(
children: <Widget>[
new Container(
decoration: new BoxDecoration(image: new DecorationImage(image: new AssetImage("images/p2.jpg"), fit: BoxFit.fill)),
),
SingleChildScrollView(
child: new Container(
color: Colors.transparent,
child: new Column(
children: <Widget>[
new Row(
children: <Widget>[
new Padding( padding: EdgeInsets.only(top: 50.0)),
],
),
new Row(
children: <Widget>[
new Expanded(child: new FlatButton(onPressed: PlayBest, child: new MyImagePro(),),),
new Expanded(child: new FlatButton(onPressed: StopBest, child: new MyImagePro(),),),
],
),
new Row(
children: <Widget>[
new Padding( padding: EdgeInsets.only(left: MediaQuery.of(context).size.height/9)), // LEFT // TOP // RIGHT // BOTTOM //
new Text("Song 1"),
new Padding( padding: EdgeInsets.only(left: MediaQuery.of(context).size.height/4.2)),
new Text("Song 2"),
],
),
new Row(
children: <Widget>[
new Expanded(child: new FlatButton(onPressed: PlayBest, child: new MyImagePro(),),),
new Expanded(child: new FlatButton(onPressed: StopBest, child: new MyImagePro(),),),
],
),
],
),
),
),
],
),
);
}