Dans cet exemple de code, je veux mettre imbriqué listview code> Intérieur SingLechechLildscrollview code>, mais je reçois cette erreur: void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'test',
home: Scaffold(
appBar: AppBar(
title: Text("Scrollview Demo"),
),
body: SingleChildScrollView(
child: Column(
children: <Widget>[
Container(
height: 50.0,
color: Colors.green,
child: Center(
child: Text('message'),
),
),
Expanded(
child: ListView.builder(
itemCount: 30,
itemBuilder: (context, index) {
return ListTile(title: Text("Index : $index"));
},
),
),
],
),
),
),
);
}
}
3 Réponses :
dans listview vous pouvez définir
Strinkwrap: true p> blockQuote>
de sorte que ListView n'occupe que l'espace nécessaire. p>
Pour désactiver le défilement sur ListView afin qu'il utilise celle de SingLechechScrollView Vous pouvez définir le P>
Physique: NeverScrollablesCrollphysics (). P> BlockQuote>
Vous devez supprimer l'expansion qui définit l'enfant pour prendre l'écran disponible en cas d'informatique ici est infini. p>
ici: p>
SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, children: <Widget>[ Container( height: 50.0, color: Colors.green, child: Center( child: Text('message'), ), ), Flexible( child: ListView.builder( itemCount: 30, shrinkWrap: true, itemBuilder: (context, index) { return ListTile(title: Text("Index : $index")); }, ), ), ], ), )
Pouvez-vous l'essayer avec un widget flexible au lieu d'élargir et de régler la maxaxisse de la colonne en min.
Au lieu d'utiliser SingLechechLildScrollView, utilisez la colonne lorsque l'enfant utilise simplement ListView.
return Scaffold(
body: ListView(
children: <Widget>[
Container(
height: 104,
child: Card(
clipBehavior: Clip.antiAliasWithSaveLayer,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8.0),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[],
),
),
),
ListView(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
),
],
),
);
ceux que j'étais dans la même situation et j'ai fait comme ça:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'test',
home: Scaffold(
appBar: AppBar(
title: Text("Scrollview Demo"),
),
body: ListView.builder(
itemCount: 30 + 1,
itemBuilder: (context, index) {
if (index == 0) {
return Container(
height: 50.0,
color: Colors.green,
child: Center(
child: Text('message'),
),
);
}
return ListTile(title: Text('Index : ${index -1}'));
},
),
),
);
}
}