#flutter #dart
#трепетать #дротик
Вопрос:
Как Container
динамически увеличивать высоту в зависимости от содержимого внутри card
виджета ListView.builder
. Я хочу container
увеличить его высоту в зависимости от содержимого, но проблема scrollDirection: Axis.horizontal,
внутри listview.builder
. Как решить эту проблему.
import 'package:flutter/material.dart'; const Color darkBlue = Color.fromARGB(255, 18, 32, 47); void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData.dark().copyWith( scaffoldBackgroundColor: darkBlue, ), home: Scaffold( body: Center( child: MyWidget(), ), ), ); } } class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { var height = MediaQuery.of(context).size.height; var width = MediaQuery.of(context).size.width; return Container( height: height * 0.200, // Here i have to put some height to show card child: ListView.builder( shrinkWrap: true, scrollDirection: Axis.horizontal, itemCount: 2, itemBuilder: (BuildContext context, int index) { return GestureDetector( child: Card( elevation: 0, child: Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ Padding( padding: const EdgeInsets.only(top: 5.0, right: 5.0), child: Row( children: [ Icon( Icons.near_me, size: 10.0, ), Text( '1 km', style: TextStyle(fontSize: 10.0), ), ], ), ), Padding( padding: const EdgeInsets.only(top: 5.0), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(left: 5.0), child: Container( height: 80.0, width: 80.0, ), ), Padding( padding: const EdgeInsets.only( left: 10.0, right: 35.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width: width * 0.40, child: Text( 'test', overflow: TextOverflow.ellipsis, maxLines: 1, style: TextStyle(fontSize: 18.0), ), ), Padding( padding: const EdgeInsets.only(top: 5.0), child: Row( children: [ Text( 'test', style: TextStyle(fontSize: 10.5), ) ], ), ), Padding( padding: const EdgeInsets.only(top: 5.0), child: Row( children: [ Icon( Icons.location_on_outlined, size: 12.0, ), Container( width: width * 0.40, child: Text( 'test', overflow: TextOverflow.ellipsis, maxLines: 1, style: TextStyle(fontSize: 11.0), ), ), ], ), ) ], ), ), ], ), ), ], )), ); }), ); } }
Комментарии:
1. Ваш виджет столбца выдает ошибку переполнения, заверните его внутрь
SingleChildScrollView
2. вы использовали фиксированную длину, вот и получили ошибку.
SingleChildScrollView
это не решит вашу проблему