Как изменить ширину представлений TextBox, используя Rikulo Anchor Layout

Я новичок в Дарт и Рикуло.

class NameView extends Section
{
  View parentVu;

  // the inputs
  DropDownList titleDdl, suffixDdl; 
  TextBox firstNameTBox, middleNameTBox, lastNameTBox;

  // the labels
  TextView titleLbl, firstNameLbl, middleNameLbl, lastNameLbl, suffixLbl;

  List<String> titles = [ 'Dr', 'Hon', 'Miss', 'Mr', 'Mrs', 'Prof', 'Sir' ];
  List<String> suffixes = ['I', 'II', 'III', 'IV', 'Junior', 'Senior'];

  NameView()
  {
     parentVu = new View()
     ..style.background = 'cyan'
     ..addToDocument();

     titleLbl = new TextView( 'Title' );
     parentVu.addChild( titleLbl );

     titleDdl = new DropDownList( model : new DefaultListModel( titles ) )
       ..profile.anchorView = titleLbl
       ..profile.location = 'east center';
     parentVu.addChild( titleDdl );

     firstNameLbl = new TextView( 'First' )
       ..profile.anchorView = titleDdl
       ..profile.location = 'east center';
     parentVu.addChild(firstNameLbl );

     firstNameTBox = new TextBox( null, 'text' )
      ..profile.anchorView = firstNameLbl
      ..profile.location = 'east center';
      //..profile.width = 'flex';
     parentVu.addChild( firstNameTBox );
}

Программа рендеринга. Однако он не использует всю ширину браузера (FireFox). Я пытался для TextBoxes profile.width = 'flex'

Но это не работает.

Любая помощь приветствуется.

2 ответа

Fire Fox? Ты проверял это с Dartium? Обратите внимание, что вам нужно скомпилировать его в JS, прежде чем вы сможете протестировать его с другими браузерами, кроме Dartium.

Кстати, из вашей реализации NameView, похоже, вообще не связано с parentVu. Если это просто контроллер, его не нужно расширять из Раздела (т. Е. Он не должен быть представлением).

Если вид привязан к другому, его местоположение и размер будут зависеть от вида, который он привязывает. В вашем случае, если указать flex для TextBox, его ширина будет такой же, как FirstNameLb1. Вот почему это так мало.

Вы можете прослушать событие макета, например:

 firstNameTBox.on.layout.listen((_) {
    firstNameTBox.width = parentVu.width;
 });

Примечание: вам нужно сделать некоторые вычисления, чтобы получить правильную ширину.

Смотрите также Обзор макета

Другие вопросы по тегам