Динамическое увеличение высоты контейнера на основе содержимого внутри виджета карты в Flutter

#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 это не решит вашу проблему