【问题标题】:InkWell widgets require a Material widget ancestorInkWell 小部件需要一个 Material 小部件祖先
【发布时间】:2019-06-20 04:38:11
【问题描述】:

我在 Row 中将 InkWell 添加为小部件,但它给我一个错误:

flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following assertion was thrown building InkWell(gestures: [tap], clipped to BoxShape.rectangle,
flutter: dirty, state: _InkResponseState<InkResponse>#0e6c5):
flutter: No Material widget found.
flutter: InkWell widgets require a Material widget ancestor.

这是我的代码:

Container(
  color: Colors.red,
  child: Row(
    mainAxisAlignment: MainAxisAlignment.spaceBetween,
    crossAxisAlignment: CrossAxisAlignment.start,
    children: <Widget>[
      InkWell(
        onTap: (){
          //Forgot password Tapped
        },
      child: Text(Constants.forgotPassword),),
    ],
),

【问题讨论】:

  • Material(child: InkWell(), ) 请尝试用 Material 小部件包裹你的 Inkwell

标签: flutter dart flutter-layout


【解决方案1】:

InkWell 类将始终与材质类一起使用

请尝试下面的代码。

代码:用 Material 类包装 InkWell 类

  Material(
          child: InkWell(
      onTap: (){
        //Forgot password Tapped
      },
    child: Text(Constants.forgotPassword),),
  ),

谢谢

【讨论】:

  • 如果我这样做了,那么我的材料开始在文本中显示白色背景。
  • Material( child: InkWell( onTap: (){ //忘记密码 Tapped }, child: Text(Constants.forgotPassword,style: new TextStyle(color: Colors.black26),),), ),
  • 请使用Text样式类并改变文字颜色
  • @CodeHunter 您可以在 Material 小部件类型中使用此属性:MaterialType.transparency,
【解决方案2】:

有两种方法可以解决上述问题。

  1. InkWell 替换为GestureDetector

     GestureDetector(
       onTap: () {
    
     },);
    
  2. Material 包装InkWell,因为InkWell 需要Material 要包装的小部件

     InkWell(
       onTap: () {
    
         },);
    

注意:要引入 Material 小部件,您可以直接包含一个,也可以使用包含 Material 本身的小部件,例如 卡片、对话框、抽屉或脚手架。

【讨论】:

    【解决方案3】:

    用 Scaffold 包裹 InkWell 类,问题就消失了。

    【讨论】:

      【解决方案4】:

      不是说Material要加为父亲。

      如果它是StatelessWidget,并且您被推送到此页面,他会自动认为它是小部件的父级,例如Scaffold

      我也遇到过,最后 Flutter 里面很多组件都已经扩展了Material,所以问题可能会更早。

      【讨论】:

        猜你喜欢
        • 2020-11-23
        • 1970-01-01
        • 2019-03-26
        • 2021-02-24
        • 1970-01-01
        • 2022-11-19
        • 2018-11-06
        • 2019-01-17
        • 2021-05-18
        相关资源
        最近更新 更多