Попытка установить ограничения блока виджета Row во Flutter - PullRequest
0 голосов
/ 16 января 2020

Хорошо, поэтому я использую Flutter и пытаюсь установить ограничения для всего виджета Row на ширину экрана, а НЕ устанавливать ограничения для каждой отдельной части строки. Я искал везде, и виджет Row не имеет параметра ширины или максимальной ширины для установки (он устанавливает его в бесконечность по некоторым причинам), и ОДНА из двух вещей в строке ДОЛЖНА быть текстовым полем (я разрабатываю на iOS, поэтому я использую CupertinoTextField, но это не должно иметь значения.

Примером тела виджета скаффолда будет:

  body: Container(
    constraints: BoxConstraints.tight(new Size(MediaQuery.of(context).size.width, double.infinity)),
    child: Row(
      children: [
        FloatingActionButton(
          onPressed: _incrementCounter,
          tooltip: 'Increment',
          child: Icon(Icons.add),
        ),
        CupertinoTextField(
          textInputAction: TextInputAction.done,
          keyboardType: TextInputType.text,
          onSubmitted: (value) {
            notes = value;
          },
          controller: textInput,
        ),
      ], 
    )
  )

Как вы можете себе представить, я получаю неограниченные ошибки окна рендеринга, так как строка НЕ ​​становится правильно ограниченной, и я понятия не имею, почему Flutter не позволит мне установить окно подсчета для всей строки (или, если это произойдет, это не так делаю так, как делаю!)

Результаты Flutter Doctor -v

[✓] Flutter (Channel master, v1.14.2-pre.20, on Mac OS X 10.15.2 19C57, locale
    en-CA)
    • Flutter version 1.14.2-pre.20 at /Users/iosdev/Developer/flutter
    • Framework revision 91f8d3da32 (2 hours ago), 2020-01-16 18:21:16 +0000
    • Engine revision e0fe834288
    • Dart version 2.8.0 (build 2.8.0-dev.2.0 009537bbf0)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/iosdev/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling
      support)
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3.1, Build version 11C504
    • CocoaPods version 1.8.4

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 42.1.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build
      1.8.0_202-release-1483-b49-5587405)

[✓] Connected device (1 available)
    • Phillip’s iPhone • 52a4fba45a6767b88e4dddd881201205138cac0e • ios • iOS
      13.3

• No issues found!

1 Ответ

0 голосов
/ 16 января 2020

Вам просто нужно обернуть ваше CupertinoTextField расширенным виджетом:

Container(
  child: Row(
    children: [
      FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
      Expanded(
        child: CupertinoTextField(
          textInputAction: TextInputAction.done,
          keyboardType: TextInputType.text,
          onSubmitted: (value) {
            notes = value;
          },
          controller: textInput,
        ),
      ),
    ],
  )
)
...