Je crée donc une application avec des scintillements. Donc, dans le fichier main.dart , je crée un composant qui est essentiellement un tas de widgets encapsulés. Je dois utiliser ce composant plusieurs fois, j'ai donc pensé à créer ces composants réutilisables dans un autre fichier de fléchettes, puis à les importer dans main.dart .
Voici mon code pour reusable.dart
ListView( children: children: <Widget>[ TileData( children: <Widget>[ Text('Element 1'), ]), TileData( children: <Widget>[ Text('Element 2'), ]), TileData( children: <Widget>[ Text('Element 3'), ], ) ], ),
Je prévois d'utiliser ce widget TileData dans mon main.dart de cette manière
import 'package:flutter/material.dart'; double mainTab = 150; class TileData extends StatefulWidget { @override _TileDataState createState() => _TileDataState(); } class _TileDataState extends State<TileData> { @override Widget build(BuildContext context) { return Container( height: 200 - 15.0, width: mainTab - 10.0, child: Padding( padding: const EdgeInsets.fromLTRB(10, 15, 0, 0), child: Column( ), ), ); } }
3 Réponses :
Créez une propriété et utilisez-la comme argument dans le constructeur du widget réutilisable.
Column( children: widget.children )
Ensuite, dans votre méthode de construction, transmettez la propriété à la colonne.
final List<Widget> children; TileData({this.children});
TileDate
import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:test/widgets/TileData.dart'; void main() => runApp(MaterialApp( home: Scaffold(backgroundColor: Color(0xFF2d3447), body: MyApp()), )); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return ListView( children: [ TileData( widgetsList: [Text("Element 1")], ), TileData( widgetsList: [Text("Element 2")], ), TileData( widgetsList: [Text("Element 3")], ) ], ); } }
main
import 'package:flutter/material.dart'; double mainTab = 150; class TileData extends StatefulWidget { List<Widget> widgetsList; TileData({this.widgetsList}); @override _TileDataState createState() => _TileDataState(); } class _TileDataState extends State<TileData> { @override Widget build(BuildContext context) { return Container( height: 200 - 15.0, width: mainTab - 10.0, child: Padding( padding: const EdgeInsets.fromLTRB(10, 15, 0, 0), child: Column( children: widget.widgetsList, ), ), ); } }
De cette façon, vous pouvez réutiliser
Vous pouvez utiliser ListView.builder()
add Constructor dans votre widget TileData
quelque chose comme
ListView.builder( itemCount:data.length, itemBuilder: (context,index){ return TileData(data:"Element $index"); } )