簡體   English   中英

錯誤使用父數據小部件。 展開的小部件必須放在彈性小部件內

[英]Incorrect use of parent data widget. expanded widgets must be placed inside flex widgets

我收到以下錯誤:

即,拋出了另一個異常:ParentDataWidget 的使用不正確。 在移動屏幕上顯示錯誤。

 @override
  Widget build(BuildContext context) {

    return MaterialApp(
      title: widget.title,
      theme: ThemeData.light().copyWith(
        platform: _platform ?? Theme.of(context).platform,
      ),
      home: DefaultTabController(
        length: categoryNames.length,
        child: Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
                 ),
        body: SafeArea(
            child: Column(
              children: <Widget>[
                Chewie(
                  controller: _chewieController,
                ),
                TabBar(
                  labelColor:Colors.black,
                  tabs: categoryNames,
                ),
                Expanded(
                  child: TabBarView(
                    children: [
                      ImageList()
                    ],
                  ),
                )
                /*TabBarView(
                  children: [
                    Icon(Icons.directions_car),
                    Icon(Icons.directions_transit),
                    Icon(Icons.directions_bike),
                  ],
                )*/
              ],
            )
        ),
      ),
      ),
    );
  }

這是我的代碼,請檢查並讓我知道問題。

您應該只在columnrowflex使用Expanded

在這種情況下,只需刪除Expanded或將其包裝在Column解決問題。

Expanded小部件必須是RowColumnFlex的后代

解決上述問題的方法是將expanded小部件移動到flex小部件內。 下面舉例。

Row(
    children: [
      Expanded(
        child: Column(
          children: [
            Container(
              padding: EdgeInsets.only(bottom: 8.0),
              child: Text(
                "Some Lage Somthing",
                style: TextStyle(fontWeight: FontWeight.bold),
              ),
            ),
            Text("Someplace, Country")
          ],
        ),
      ),
      Icon(Icons.star)
    ],
  ),
);

飄飄快樂!

第一條規則:僅在columnrowflex使用Expanded

第二條規則:具有擴展子列的父column也必須用擴展包裹

我的問題是因為 Expand

          child: Expanded(
            child: SingleChildScrollView(
              scrollDirection: Axis.vertical,
              child: Column(
                children: getChildren(cubit.listPerformer, state),
              ),

刪除展開后,它工作正常。

我的代碼中沒有展開,所以我發現如果它在listview ,使用Spacer()也會導致這個錯誤

當我跳過視頻時,chewie 控制器顯示這些錯誤,當我修復了 chewie 包錯誤消失。

請在此處修復 material_controls.dart

[刪除堆棧小部件中的擴展小部件]

return MouseRegion(
  onHover: (_) {
    _cancelAndRestartTimer();
  },
  child: GestureDetector(
    onTap: () => _cancelAndRestartTimer(),
    child: AbsorbPointer(
      absorbing: notifier.hideStuff,
      child: Stack(
        children: [
          if (_latestValue.isBuffering)
            const Expanded(
              child: Center(
                child: CircularProgressIndicator(),
              )
            )
          else
            _buildHitArea(),
          _buildActionBar(),
          Column(
            mainAxisAlignment: MainAxisAlignment.end,
            children: <Widget>[
              if (_subtitleOn)
                Transform.translate(
                  offset: Offset(
                      0.0, notifier.hideStuff ? barHeight * 0.8 : 0.0),
                  child:
                      _buildSubtitles(context, chewieController.subtitle!),
                ),
              _buildBottomBar(context),
            ],
          ),
        ],
      ),
    ),
  ),
);

}

就我而言,我在列內使用Positioned 刪除它解決了問題!

可能有一些事情可以解決這個問題

  1. ListView不要使用Spacer Widget
  2. 不要在行或Column下使用Positiond
  3. Expanded只能與column row Flex

此解決方案僅在您使用 Position 作為行或列的父級時才有效

就我而言,我在列內使用定位。 刪除它解決了問題!

別的

永遠記住在行、列或 Flex 中使用 Expanded

就我而言,我在 Padding 小部件中使用 Expanded。 Padding 在列內,但由於 Expanded 被 Padding 包裹,它給了我錯誤。 只需刪除 Expanded 即可解決我的問題。

"

就我而言,這是因為我將 Expanded 封裝在 SizedBox 中,我只是將 Expanded 封裝在 Row 中,僅此而已。

"

您可以像這樣使用Expanded作為滾動父級的子級:

Scaffold(
  body: CustomScrollView(
    physics: const AlwaysScrollableScrollPhysics(),
    slivers: [
      SliverFillRemaining(
        fillOverscroll: true,
        child: Column(
          children: <Widget>[
            Container(color: Colors.red,height: 100),
            Expanded(
              child: Container(color: Colors.purple,),
            ),
          ],
        ),
      )
    ],
  ),
)

我刪除了一個位於StackContainer內的Positioned小部件,“不正確使用 ParentDataWidget”的問題就消失了。

這個問題來自舊屏幕。 因為這個屏幕在舊屏幕上,所以控制台可能會顯示舊屏幕錯誤。 為了解決這個問題,我修復了舊屏幕的問題

暫無
暫無

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

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