问题
I am trying to wrap the text 'Awesome somthing very long text which should ideally soft warp' in the blow code. Tried using Flexible
and Expanded
, did not work.
It's getting tough to have softWrap
working in nested row column scenarios :(
import 'package:flutter/material.dart';
import 'package:sample/models/Reward.dart';
class RewardDetailsView extends StatelessWidget {
final Reward _reward;
RewardDetailsView(this._reward);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 0,
),
body: Container(
child: SingleChildScrollView(
padding: EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Icon(Icons.wallpaper),
SizedBox(width: 16.0),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Benefits',
style: TextStyle(
fontSize: 14.0,
fontWeight: FontWeight.w600,
color: Colors.grey[600],
),
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 4.0),
child: Icon(
Icons.arrow_right,
size: 10.0,
),
),
SizedBox(width: 8.0),
Text(
'Awesome somthing very long text which should ideally soft warp',
softWrap: true,
),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 4.0),
child: Icon(
Icons.arrow_right,
size: 10.0,
),
),
SizedBox(width: 8.0),
Text(
'Awesome somthing very long text which should ideally soft warp',
softWrap: true,
),
],
),
],
),
],
),
],
),
),
),
);
}
}
Below is the output of the code. If I add Flexible around the Text
widget, it disappears from the screen.
回答1:
You're using nested rows in your widget tree. In that case by wrapping a widget with Expanded
widget won't work, because the framework cant layout width for the parent element if it is either Row
or Column
widget.
here is a working code sample based on your example.
class RewardDetailsView extends StatelessWidget {
final dynamic _reward = 'asdfasdfsd';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 0,
),
body: Container(
child: SingleChildScrollView(
padding: EdgeInsets.all(16.0),
child: Column(
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Icon(Icons.wallpaper),
SizedBox(width: 16.0),
Expanded( // Wrap this column inside an expanded widget so that framework allocates max width for this column inside this row
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Benefits',
style: TextStyle(
fontSize: 14.0,
fontWeight: FontWeight.w600,
color: Colors.grey[600],
),
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 4.0),
child: Icon(
Icons.arrow_right,
size: 10.0,
),
),
SizedBox(width: 8.0),
Expanded( // Then wrap your text widget with expanded
child: Text(
'Awesome somthing very long text which should ideally soft warp lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorm ipsum',
softWrap: true,
)),
],
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 4.0),
child: Icon(
Icons.arrow_right,
size: 10.0,
),
),
SizedBox(width: 8.0),
Text(
'Awesome somthing very long text which should ideally soft warp',
softWrap: true,
),
],
),
],
)),
],
),
],
),
),
),
);
}
}
来源:https://stackoverflow.com/questions/60214842/text-widget-softwrap-not-working-in-nested-row-column-row-in-flutter