Flutter 열의 위젯을 사용 가능한 크기로 축소하려면 어떻게해야합니까?

신자

Column다양한 수의 타이머를 사용 하는 Flutter 가 있습니다. 하나의 타이머가 필요하면 결과가 원하는 것처럼 보입니다.

타이머 1 개로 데모

그러나 두 개의 타이머를 추가하면 오버플로가 발생합니다.

오버플로가 발생하는 2 개의 타이머로 데모

두 번째 경우에는 타이머가 축소되어 사용 가능한 공간을 차지하고 싶습니다. 타이머가 4 개인 경우 두 개의 행과 두 개의 열을 표시하는 것이 이상적입니다.

나는 내 타이머 FittedBox를 내가 맞추기 위해 설정 것으로 감싸려고 시도했지만 BoxFit.fitHeight원하는 결과를 얻지 못했습니다. 그 밖에 무엇을해야합니까?

주석에서 요청한대로 Wrap을 사용한 코드 :

Wrap(
        children: state.currentTimers
            .map((selectedTimer) => TimerSessionWidget(selectedTimer))
            .toList(),
      );

class TimerSessionWidget extends StatefulWidget {
  @override
  _SelectedTimerState createState() => _SelectedTimerState(_selectedTimer);

  final TimerSession _selectedTimer;

  TimerSessionWidget(this._selectedTimer);
}

class _SelectedTimerState extends State {
  final TimerSession _selectedTimer;

  _SelectedTimerState(this._selectedTimer);

  @override
  Widget build(BuildContext context) {
    return FittedBox(
      fit: BoxFit.fitHeight,
      child: Padding(
        padding: const EdgeInsets.all(8.0),
        child: GestureDetector(
          behavior: HitTestBehavior.deferToChild,
          onTap: () {
            if (_selectedTimer.loadedTimerBloc.state is VirginTimerState) {
              _selectedTimer.loadedTimerBloc.add(StartTimerAction());
            } else if (_selectedTimer.loadedTimerBloc.state
                is FinishedTimerState) {
              _selectedTimer.stopAlarmSound();
            }
          },
          child: BlocProvider(
            builder: (context) {
              return _selectedTimer.loadedTimerBloc;
            },
            child: FittedBox(
              fit: BoxFit.fitHeight,
              child: Container(
                  height: 200,
                  width: 200,
                  decoration: BoxDecoration(
                      shape: BoxShape.circle,
                      border: Border.all(
                        width: 5.0,
                      )),
                  child: Stack(children: [
                    Align(
                        alignment: Alignment.center,
                        child: DurationDisplayWidget(_selectedTimer)),
                    Align(
                        alignment: Alignment.bottomCenter,
                        child: Padding(
                            padding: const EdgeInsets.all(20.0),
                            child: TimerActionWidget())),
                    Align(
                      alignment: Alignment.topRight,
                      child: RemoveTimerWidget(_selectedTimer),
                    )
                  ])),
            ),
          ),
        ),
      ),
    );
  }
}
오미 샤 |

Column아이들을 아래로 감싸 야합니다.Expanded

"확장 된 위젯을 사용하면 행, 열 또는 Flex의 하위 항목이 확장되어 주 축을 따라 사용 가능한 공간을 채 웁니다 (예 : 행의 경우 가로로, 열의 경우 세로로). 여러 하위 항목이 확장 된 경우 사용 가능한 공간은 다음과 같습니다. 플렉스 팩터에 따라 나누어집니다. " from https://api.flutter.dev/flutter/widgets/Expanded-class.html

:

import 'package:flutter/material.dart';

class Demo extends StatefulWidget {
  @override
  MyHomePageState createState() => new MyHomePageState();
}

class MyHomePageState extends State<Demo> {
  @override
  Widget build(BuildContext context) {
    return Column(children: <Widget>[
      Expanded(
          child: Container(
              child: Container(
                  child: Image.network(
                      "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQgQu8nlAEzW63m0pKcq9csbtk-3ni_QlvW4uy6DgeaWbO4Fze1")))),
      Expanded(
          child: Container(
              child: Container(
                  child: Image.network(
                      "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQgQu8nlAEzW63m0pKcq9csbtk-3ni_QlvW4uy6DgeaWbO4Fze1")))),
      Expanded(
          child: Container(
              child: Container(
                  child: Image.network(
                      "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQgQu8nlAEzW63m0pKcq9csbtk-3ni_QlvW4uy6DgeaWbO4Fze1")))),
      Expanded(
          child: Container(
              child: Container(
                  child: Image.network(
                      "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQgQu8nlAEzW63m0pKcq9csbtk-3ni_QlvW4uy6DgeaWbO4Fze1")))),
      Expanded(
          child: Container(
              child: Container(
                  child: Image.network(
                      "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQgQu8nlAEzW63m0pKcq9csbtk-3ni_QlvW4uy6DgeaWbO4Fze1")))),
      Expanded(
          child: Container(
              child: Container(
                  child: Image.network(
                      "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQgQu8nlAEzW63m0pKcq9csbtk-3ni_QlvW4uy6DgeaWbO4Fze1")))),
    ]);
  }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Flutter 블록을 사용하여 사용자가 입력 할 때 값을 다른 위젯으로 업데이트하는 텍스트 필드를 구축하려면 어떻게해야합니까?

분류에서Dev

Flutter-컨테이너의 테두리에 위젯을 추가하려면 어떻게해야합니까?

분류에서Dev

입력과 레이블을 사용하여 CSS만으로 축소 가능한 요소를 만들려면 어떻게해야합니까?

분류에서Dev

하위 도메인을 기반으로 사용자 정의 가능한 CSS를 설정하려면 어떻게해야합니까?

분류에서Dev

4 개의 요소로 가능한 모든 이진 목록을 생성하려면 어떻게해야합니까? (Python 사용)

분류에서Dev

명령 줄을 사용하여 광학 드라이브의 가능한 굽기 속도를 나열하려면 어떻게해야합니까?

분류에서Dev

matplotlib 툴바의 사용자 정의 버튼에 기능을 추가하려면 어떻게해야합니까?

분류에서Dev

변경 불가능할 때 프로토 타입을 사용하여 문자열에 메소드를 추가하려면 어떻게해야합니까?

분류에서Dev

사용 가능한 색상 이름을 나열하려면 어떻게해야합니까?

분류에서Dev

Flutter에서 가변 크기 위젯을 자르려면 어떻게합니까?

분류에서Dev

Flutter에서 위젯을 사용하여 파일에서 텍스트를 읽고 목록으로 표시하려면 어떻게해야합니까?

분류에서Dev

Bash 5.1 연관 배열을 정의하기 위해 키와 값을 번갈아 가며 사용하려면 어떻게해야합니까?

분류에서Dev

사용자 정의 가능한 여백으로 창에서 스크린 샷을 찍으려면 어떻게해야합니까?

분류에서Dev

사용자가 버튼을 눌렀을 때 크기가 축소되도록하려면 어떻게해야합니까?

분류에서Dev

스크롤 가능한 목록을 최대 크기로 설정하지만 필요하지 않을 때는 축소하려면 어떻게해야합니까?

분류에서Dev

NextJS + React에서 API 생성 콘텐츠로 사용자 정의 가능한 동적 URL을 생성하려면 어떻게해야합니까?

분류에서Dev

재사용 가능한 방법으로 코드의이 부분을 추출하려면 어떻게해야합니까?

분류에서Dev

flexbox 항목의 하위 요소를 스크롤 가능하게 만들려면 어떻게해야합니까?

분류에서Dev

배열의 모든 내용을 한 줄로 인쇄하려면 어떻게해야합니까?

분류에서Dev

추가 가능한 관찰 가능한 대기열을 만들려면 어떻게해야합니까?

분류에서Dev

탭 페이지의 배경 이미지를 사용 가능한 크기로 확장하려면 어떻게해야합니까?

분류에서Dev

Laravel에 로그인 한 사용자의 항목을 표시하려면 어떻게해야합니까?

분류에서Dev

현지 시간을`ntpd`의 유일한 참조로 사용하려면 어떻게해야합니까?

분류에서Dev

Flutter에서 위젯 스크린 샷을 jpg 파일로 저장하려면 어떻게해야합니까?

분류에서Dev

Flutter : 각기 다른 크기의 스크롤 가능한 ListView를 사용하여 두 개의 열 레이아웃을 어떻게 만들 수 있습니까?

분류에서Dev

최신 버전의 Python을 사용하기 위해`venv '로 Python 가상 환경을 업데이트하려면 어떻게해야합니까?

분류에서Dev

로컬 사용자의 가상 머신에서 명령을 실행하려면 어떻게해야합니까?

분류에서Dev

Wildfly의 각 로그 줄에 사용자 이름 (principal)을 추가하려면 어떻게해야합니까?

분류에서Dev

Flutter의 ListView에 해제 가능한 위젯을 어떻게 추가하나요?

Related 관련 기사

  1. 1

    Flutter 블록을 사용하여 사용자가 입력 할 때 값을 다른 위젯으로 업데이트하는 텍스트 필드를 구축하려면 어떻게해야합니까?

  2. 2

    Flutter-컨테이너의 테두리에 위젯을 추가하려면 어떻게해야합니까?

  3. 3

    입력과 레이블을 사용하여 CSS만으로 축소 가능한 요소를 만들려면 어떻게해야합니까?

  4. 4

    하위 도메인을 기반으로 사용자 정의 가능한 CSS를 설정하려면 어떻게해야합니까?

  5. 5

    4 개의 요소로 가능한 모든 이진 목록을 생성하려면 어떻게해야합니까? (Python 사용)

  6. 6

    명령 줄을 사용하여 광학 드라이브의 가능한 굽기 속도를 나열하려면 어떻게해야합니까?

  7. 7

    matplotlib 툴바의 사용자 정의 버튼에 기능을 추가하려면 어떻게해야합니까?

  8. 8

    변경 불가능할 때 프로토 타입을 사용하여 문자열에 메소드를 추가하려면 어떻게해야합니까?

  9. 9

    사용 가능한 색상 이름을 나열하려면 어떻게해야합니까?

  10. 10

    Flutter에서 가변 크기 위젯을 자르려면 어떻게합니까?

  11. 11

    Flutter에서 위젯을 사용하여 파일에서 텍스트를 읽고 목록으로 표시하려면 어떻게해야합니까?

  12. 12

    Bash 5.1 연관 배열을 정의하기 위해 키와 값을 번갈아 가며 사용하려면 어떻게해야합니까?

  13. 13

    사용자 정의 가능한 여백으로 창에서 스크린 샷을 찍으려면 어떻게해야합니까?

  14. 14

    사용자가 버튼을 눌렀을 때 크기가 축소되도록하려면 어떻게해야합니까?

  15. 15

    스크롤 가능한 목록을 최대 크기로 설정하지만 필요하지 않을 때는 축소하려면 어떻게해야합니까?

  16. 16

    NextJS + React에서 API 생성 콘텐츠로 사용자 정의 가능한 동적 URL을 생성하려면 어떻게해야합니까?

  17. 17

    재사용 가능한 방법으로 코드의이 부분을 추출하려면 어떻게해야합니까?

  18. 18

    flexbox 항목의 하위 요소를 스크롤 가능하게 만들려면 어떻게해야합니까?

  19. 19

    배열의 모든 내용을 한 줄로 인쇄하려면 어떻게해야합니까?

  20. 20

    추가 가능한 관찰 가능한 대기열을 만들려면 어떻게해야합니까?

  21. 21

    탭 페이지의 배경 이미지를 사용 가능한 크기로 확장하려면 어떻게해야합니까?

  22. 22

    Laravel에 로그인 한 사용자의 항목을 표시하려면 어떻게해야합니까?

  23. 23

    현지 시간을`ntpd`의 유일한 참조로 사용하려면 어떻게해야합니까?

  24. 24

    Flutter에서 위젯 스크린 샷을 jpg 파일로 저장하려면 어떻게해야합니까?

  25. 25

    Flutter : 각기 다른 크기의 스크롤 가능한 ListView를 사용하여 두 개의 열 레이아웃을 어떻게 만들 수 있습니까?

  26. 26

    최신 버전의 Python을 사용하기 위해`venv '로 Python 가상 환경을 업데이트하려면 어떻게해야합니까?

  27. 27

    로컬 사용자의 가상 머신에서 명령을 실행하려면 어떻게해야합니까?

  28. 28

    Wildfly의 각 로그 줄에 사용자 이름 (principal)을 추가하려면 어떻게해야합니까?

  29. 29

    Flutter의 ListView에 해제 가능한 위젯을 어떻게 추가하나요?

뜨겁다태그

보관