簡體   English   中英

SingleChildScrollView,子列上的空格問題

[英]SingleChildScrollView , Problem with spaces on the child Column

當我嘗試打開手機鍵盤時,我的** PIXELS 底部溢出,所以我將我的 Column 包裹在SingleChildScrollView但不知何故它被推到頂部並且MainAxisAlignment.spaceEvenly停止工作,所以我使用SizedBox在它們之間留出了一些空間問題是:這是做到這一點的好方法嗎? 實現小部件之間的空間,它是否適用於不同的手機尺寸

我的代碼: 在此處輸入圖像描述

第二個問題:當我打開鍵盤時,如何將所有列推到頂部直到最后一項顯示而不滾動,如下圖所示

在此處輸入圖像描述

  1. 要使MainAxisAlignment.spaceEvenly再次工作,您需要將您的內部包裝為ConstrainedBox ,如下所示:
SingleChildScrollView(
        child: ConstrainedBox(
          constraints: BoxConstraints(
            maxHeight: MediaQuery.of(context).size.height,
          ),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              Text('data'),
              Text('HelloWorld'),
            ],
          ),
        ),
      ),
  1. 要滾動到表單的末尾,請為SingleChildScrollView使用ScrollController並像這樣動畫到列表的末尾:
   controller.animateTo(
      controller.position.maxScrollExtent,
      duration: const Duration(milliseconds: 500),
      curve: Curves.easeOut,
    );
  1. 可以將SizedBox用於空格,一個小提示:記得在它之前設置const以使您的應用程序性能更高,因為這樣 flutter 不會在每次重建小部件時重建 sizedBox 小部件

希望你覺得這對你有幫助 =D

通常您應該使用ListView ,這應該可以解決鍵盤隱藏表單字段的問題。

關於SizedBox和你的小部件分布的問題,那是因為通常當你創建一個列時,它使用父級的整個高度,但在SingleChildScrollView的情況下,它沒有給你一個大小,因此專欄不知道如何分配您的孩子。

最后,我看到很多開發者使用SizedBox來創建間距,所以我認為使用它並沒有什么問題。 您還可以創建一個ListView.separated官方文檔),它將添加一個相同的 Widget(您提供的)作為分隔符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM