Виджет стека Не прокручивается в SCSV, Трепещет

#flutter #mobile #flutter-layout

Вопрос:

Я использую виджет «от одного Stack до Positioned одного» поверх Image.asset виджета, но проблема в том, что мой виджет «Весь стек» не прокручивается для просмотра всего содержимого. Я завернул Stack виджет в a SingleChildScrollView , но проблема все еще сохраняется. Если я оберну виджет стека с помощью a Containter и дам height: MediaQuery.of(context).size.height, ему возможность прокрутки, но я все равно не смогу увидеть все содержимое страницы. Где моя ошибка, вот что мне интересно? С помощью какого виджета я должен обернуть стек или есть лучший способ решить мою проблему? Короче говоря, я укладываю a Column поверх an Image , и мне нужно, чтобы весь Stack виджет был прокручиваемым, чтобы я мог видеть все содержимое виджета стека. Вот код:

 Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.grey,
      body: SafeArea(
        child: SingleChildScrollView(
          child: Stack(
            overflow: Overflow.visible,
            children: [
              Image.asset(
                'lib/modules/common/images/logo.png',
                width: double.infinity,
                height: 196.0,
              ),
              Positioned(
                width: MediaQuery.of(context).size.width,
                height: MediaQuery.of(context).size.height,
                top: 136.0,
                child: Column(
                  children: [
                    Container(), // some content inside the container
                    Container(), // // some content inside the container
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
 

Заранее спасибо за помощь!

Комментарии:

1. Включите расширенное представление в представление Singlechildscroll.

2. @FilipePilettiPlucenio С расширением говорит, что я должен использовать Flexible , а не расширять, и мне нужно обернуть его буквой а Flex , и я получаю те же результаты.

Ответ №1:

если вы хотите иметь изображение на задней панели и прокручиваемый контент на передней панели, проверьте этот ответ, если нет, дайте мне знать и поделитесь прототипом/изображением, которое вы хотите.

 

  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.grey,
      body: SafeArea(
        child: SingleChildScrollView(
          child: SizedBox(
            width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.height * 3,
            child: Stack(
              fit: StackFit.loose,
              children: [
                Align(
                  alignment: Alignment.topCenter,
                  child: Image.asset(
                    'assets/image.jpg',
                    width: double.infinity,
                    height: 196.0,
                  ),
                ),
                Positioned(
                  top: 136.0,
                  child: SizedBox(
                    width: MediaQuery.of(context).size.width,
                    height: MediaQuery.of(context).size.height,
                    child: Column(
                      mainAxisSize: MainAxisSize.min,
                      children: List.generate(
                        2,
                        (index) => Container(
                          height: 100,
                          width: double.infinity,
                          color: index % 2 == 0
                              ? Colors.amberAccent
                              : Colors.cyanAccent,
                        ), // some content inside the container
                        // some content inside the container
                      ),
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
 

Комментарии:

1. Спасибо за идею, но, как я уже сказал, мне нужно, чтобы все Stack было прокручиваемым, а не только Positioned виджет.

2. Я отредактировал нужный мне вид, так что, возможно, это можно сделать по-другому.

3. в этом случае 2-й виджет должен находиться на высоте экрана

4. Это работает, но я хочу, чтобы прокручиваться можно было только для его содержимого (что-то вроде высоты ограничения), если я добавлю пользовательскую высоту стека, как я сделал в вопросе, я могу прокручивать слишком много, и это оставляет пустое место.