В Flutter высота контейнера, существующего в Listview, должна быть максимальной.
Hello. Я собираюсь задать вам два вопроса о Flutter.
Первый вопрос - это то, что часть тела - это Listview, и в нем есть 2 контейнера. Высота «верхней области», существующей в верхней части, является фиксированной, а высота содержимого «TEST1» и «TEST2», существующих в нижней части, должна изменяться гибко.
Есть ли способ установить максимальную высоту содержимого внизу?
Например, если содержимое в нижней части меньше высоты устройства, содержимое должно располагаться посередине высоты устройства.
Кроме того, если содержимое нижней части превышает высоту устройства, оно должно быть прикреплено под частью «Верхняя область», и вы сможете проверить содержимое нижней части с помощью Listview.
Я пробовал различные методы, такие как «Гибкий» и «Расширенный», но я еще не решил его.
Второй вопрос касается переноса текста.
Если вы посмотрите на область 'Test2', текст 'it test contentsssss' превышает указанную ширину, поэтому последнее слово автоматически переносится и начинается со следующей строки.
Однако, если вы смотрите на область «Test1», корейское предложение «Это тестовое предложение»
Я пытался использовать TextAlign.justify, но это не сработало.
Есть ли способ решить это?
Буду признателен, если вы поможете мне с ответами.
Извините и спасибо за чтение длинного поста.
Ниже приведен захват и код Я написал.
образец изображения
class Testapp extends StatefulWidget {
@override
_TestappState createState() => _TestappState();
}
class _TestappState extends State<Testapp> {
SharedPreferences _prefs;
int _subjectcolor;
int _verbcolor;
String _directobjectcolor;
String _inobjectcolor;
String _nickname;
MaterialColor wordColorMap;
@override
void initState() {
super.initState();
_loadColor();
}
//Color load function
_loadColor() async {
_prefs = await SharedPreferences.getInstance();
setState(() {
var mapColor = {
'50': '0xffeceff1',
'100': '0xffcfd8dc',
'200': '0xffb0bec5',
'300': '0xff90a4ae',
'400': '0xff78909c',
'500': '0xff607d8b',
'600': '0xff546e7a',
'700': '0xff455a64',
'800': '0xff37474f',
'900': '0xff263238',
};
_subjectcolor = (_prefs.getInt('subjectcolor') ?? 0xbb1674f6);
_verbcolor = (_prefs.getInt('verbcolor') ?? 0xff1674f6);
_directobjectcolor = (_prefs.getString('DirectObjectColor') ??
'MaterialColor(primary value: Color(0xff263238))');
// testcolor = _directobjectcolor;
_inobjectcolor =
(_prefs.getString('InDirectColor') ?? json.encode(mapColor));
var color = int.parse(_directobjectcolor.split('(')[2].split(')')[0]);
var mColorString = json.decode(_inobjectcolor);
print(_inobjectcolor);
Map<int, Color> mColor = {
50: Color(int.parse(mColorString['50'])),
100: Color(int.parse(mColorString['100'])),
200: Color(int.parse(mColorString['200'])),
300: Color(int.parse(mColorString['300'])),
400: Color(int.parse(mColorString['400'])),
500: Color(int.parse(mColorString['500'])),
600: Color(int.parse(mColorString['600'])),
700: Color(int.parse(mColorString['700'])),
800: Color(int.parse(mColorString['800'])),
900: Color(int.parse(mColorString['900'])),
};
wordColorMap = MaterialColor(color, mColor);
});
}
@override
Widget build(BuildContext context) {
final Size size = MediaQuery.of(context).size;
return Scaffold(
appBar: inPageAppBar(context, 2),
body: Column(
children: <Widget>[
Expanded(
child: ListView(
children: <Widget>[
Container(
padding: EdgeInsets.fromLTRB(0, 5, 0, 0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[Text('top area')],
),
],
),
),
Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Container(
padding: EdgeInsets.fromLTRB(0, 10, 0, 20),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
width: 141,
height: 58,
margin: EdgeInsets.fromLTRB(
size.width * 0.1,
8,
size.width * 0.05,
0),
padding:
EdgeInsets.fromLTRB(10, 10, 10, 0),
child: Center(
child: Text(
'TEST1',
textScaleFactor: 1.0,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold),
),
),
),
Container(
width: 141,
height: 58,
margin: EdgeInsets.fromLTRB(
size.width * 0.05,
8,
size.width * 0.1,
0),
padding:
EdgeInsets.fromLTRB(10, 10, 10, 0),
child: Center(
child: Text(
'TEST2',
textScaleFactor: 1.0,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold),
),
),
),
],
),
),
for (int i = 0; i < 3; i++)
Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IntrinsicHeight(
child: Row(
mainAxisAlignment:
MainAxisAlignment.center,
crossAxisAlignment:
CrossAxisAlignment.stretch,
children: <Widget>[
Container(
width: 141,
margin: EdgeInsets.fromLTRB(
size.width * 0.1,
8,
size.width * 0.05,
8),
padding: EdgeInsets.fromLTRB(
10, 10, 10, 10),
decoration: BoxDecoration(
border: i == 0
? Border.all(
color: Color(
_subjectcolor -
3138811124),
width: 3)
: i == 1
? Border.all(
color: Color(
_verbcolor),
width: 3)
: i == 2
? Border.all(
color:
wordColorMap[
700],
width: 3)
: Border.all(
color: wordColorMap[700 -
((i - 2) *
100)],
width: 3),
borderRadius:
BorderRadius.all(Radius.circular(5)),
color: i == 0 ? Color(_subjectcolor) : i == 1 ? Color(_verbcolor) : i == 2 ? wordColorMap[700] : wordColorMap[700 - ((i - 2) * 100)]),
child: Center(
child: Text(
'테스트 문장입니다다아아아',
softWrap: true,
textAlign:
TextAlign.justify,
textScaleFactor: 1.0,
style: TextStyle(
fontSize: 16,
height: 1.5,
color: Colors.white),
),
),
),
Container(
width: 141,
margin: EdgeInsets.fromLTRB(
size.width * 0.05,
8,
size.width * 0.1,
8),
padding: EdgeInsets.fromLTRB(
10, 10, 10, 10),
decoration: BoxDecoration(
border: i == 0
? Border.all(
color: Color(
_subjectcolor -
3138811124),
width: 3)
: i == 1
? Border.all(
color: Color(
_verbcolor),
width: 3)
: i == 2
? Border.all(
color:
wordColorMap[
700],
width: 3)
: Border.all(
color: wordColorMap[700 -
((i - 2) *
100)],
width: 3),
borderRadius:
BorderRadius.all(Radius.circular(5)),
color: i == 0 ? Color(_subjectcolor) : i == 1 ? Color(_verbcolor) : i == 2 ? wordColorMap[700] : wordColorMap[700 - ((i - 2) * 100)]),
child: Center(
child: Text(
'it a test contentsssss',
textAlign: TextAlign.center,
textScaleFactor: 1.0,
style: TextStyle(
fontSize: 16,
height: 1.5,
locale:
Locale('ko', 'KR'),
color: Colors.white),
),
),
),
]),
),
],
),
],
),
),
),
],
),
),
],
),
),
],
));
}
}