Ширина слова: родительский фланг: флаттер
Я новичок в Flutter, поэтому хочу знать, как установить ширину в соответствии с шириной макета родителя
new Container(
width: 200.0,
padding: const EdgeInsets.only(top: 16.0),
child: new RaisedButton(
child: new Text(
"Submit",
style: new TextStyle(
color: Colors.white,
)
),
colorBrightness: Brightness.dark,
onPressed: () {
_loginAttempt(context);
},
color: Colors.blue,
),
),
Я знаю немного о расширенном теге, но расширенный просмотр в обоих направлениях, я не знаю, как это сделать. Помогите мне, если вы знаете, спасибо в Advance.
Ответы
Ответ 1
Правильным решением будет использование виджета SizedBox.expand
, который обеспечивает соответствие его child
элемента его родительскому размеру.
new SizedBox.expand(
child: new RaisedButton(...),
)
Существует много альтернатив, которые позволяют более или менее настроить:
new SizedBox(
width: double.infinity,
// height: double.infinity,
child: new RaisedButton(...),
)
или используя ConstrainedBox
new ConstrainedBox(
constraints: const BoxConstraints(minWidth: double.infinity),
child: new RaisedButton(...),
)
Ответ 2
Атрибут размера может быть предоставлен с помощью ButtonTheme
с minWidth: double.infinity
ButtonTheme(
minWidth: double.infinity,
child: MaterialButton(
onPressed: () {},
child: Text('Raised Button'),
),
),
или после приземления https://github.com/flutter/flutter/pull/19416
MaterialButton(
onPressed: () {},
child: SizedBox.expand(
width: double.infinity,
child: Text('Raised Button'),
),
),
Ответ 3
new Container {
width: double.infinity,
child: new RaisedButton(...),
}
Ответ 4
Самый простой способ - использовать FlatButton, обернутый внутри контейнера. Кнопка по умолчанию принимает размер своего родителя и назначает контейнеру желаемую ширину.
Container(
color: Colors.transparent,
width: MediaQuery.of(context).size.width,
height: 60,
child: FlatButton(
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(30.0),
),
onPressed: () {},
color: Colors.red[300],
child: Text(
"Button",
style: TextStyle(
color: Colors.black,
fontFamily: 'Raleway',
fontSize: 22.0,
),
),
),
)
приведенный выше виджет производит следующий вывод
![enter image description here]()
Ответ 5
После некоторых исследований я обнаружил некоторое решение, и благодаря @Günter Zöchbauer,
Я использовал столбец вместо контейнера и
установите свойство в столбец CrossAxisAlignment.stretch, чтобы заполнить родительский элемент соответствия Button
new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new RaisedButton(
child: new Text(
"Submit",
style: new TextStyle(
color: Colors.white,
)
),
colorBrightness: Brightness.dark,
onPressed: () {
_loginAttempt(context);
},
color: Colors.blue,
),
],
),
Ответ 6
Это сработало для меня.
Самый простой способ дать ширину или высоту соответствия родителю в приведенном выше коде.
...
width: double.infinity,
height: double.infinity,
...
Ответ 7
использование ListTile также работает, так как список заполняет всю ширину:
new ListTile(
title: new RaisedButton(...),
),
Ответ 8
Следующий код работает для меня
ButtonTheme(
minWidth: double.infinity,
child: RaisedButton(child: Text("Click!!", style: TextStyle(color: Colors.white),), color: Colors.pink, onPressed: () {}))
Ответ 9
Это работает для меня.
SizedBox(
width: double.maxFinite,
child: RaisedButton(
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
child: new Text("Button 2"),
color: Colors.lightBlueAccent,
onPressed: () => debugPrint("Button 2"),
),
),
Ответ 10
Для match_parent
вы можете использовать
SizedBox(
width: double.infinity, // match_parent
child: RaisedButton(...)
)
Для любого конкретного значения вы можете использовать
SizedBox(
width: 100, // specific value
child: RaisedButton(...)
)
Ответ 11
new SizedBox(
width: 100.0,
child: new RaisedButton(...),
)
Ответ 12
@Мохит Сутар,
Нашел одно из лучших решений для соответствия родителя ширине и высоте, как показано ниже
new Expanded(
child: new Container(
padding: EdgeInsets.all(16.0),
margin: EdgeInsets.all(16.0),
decoration: new BoxDecoration(
color: Colors.white,
borderRadius:
const BorderRadius.all(const Radius.circular(8.0)),
border: new Border.all(color: Colors.black, width: 1.0)),
child: new Text("TejaDroid")),
),
Здесь вы можете проверить, что Expanded
контроллер получает всю оставшуюся ширину и высоту.
Ответ 13
Это работает для меня в автономном виджете.
Widget signinButton() {
return ButtonTheme(
minWidth: double.infinity,
child: new FlatButton(
onPressed: () {},
color: Colors.green[400],
textColor: Colors.white,
child: Text('Flat Button'),
),
);
}
// It can then be used in a class that contains a widget tree.
Ответ 14
Лоток double.infinity
для double.infinity
ширины размера
new SizedBox(
width: double.infinity,
child: RaisedButton(...),
)