繁体   English   中英

错误:无法将参数类型“Context”分配给参数类型“BuildContext”

[英]error: The argument type 'Context' can't be assigned to the parameter type 'BuildContext'

此编译错误:错误:无法将参数类型“Context”分配给参数类型“BuildContext”(argument_type_not_assignable at [tter] lib\\Pages\\list_view.dart:95)

我不知道为什么突然显示此错误应用程序工作正常但我仍然在我的代码中看到错误
这是我的代码:

import 'package:path/path.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:tter/utilities/database_helper.dart';
TextEditingController searchText = TextEditingController();
class CardsListView extends StatefulWidget {
  int whereComeFrom;
  CardsListView(this.whereComeFrom);
  @override
  CardsListViewState createState() => CardsListViewState(whereComeFrom);
}

class CardsListViewState extends State<CardsListView> {
  int whereComeFrom;
  CardsListViewState(this.whereComeFrom);
  var db = DatabaseHelper();
  List mainList = [];
  _showDialog() {
    showDialog(
        context: context,
        builder: (BuildContext context){
          return StatefulBuilder(
            builder: (context,sett){
              void _showSearchReturn(String query) async{
              }
              return  Container(
              );
            },
          );
        }
    );
  }

  @override
  Widget build(BuildContext context){
    return Container();
  }
}

State 提供的 Context 不是最好的选择。 我建议将 BuildContext 传递给_showDialog()方法。 我已经发布了下面的代码来向您展示。 我也做了它,这样你的 State 类中就不需要构造函数了。

import 'package:path/path.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:tter/utilities/database_helper.dart';
TextEditingController searchText = TextEditingController();

class CardsListView extends StatefulWidget {
  final int whereComeFrom; // immutable class, should be declared as final for all variables
  CardsListView(this.whereComeFrom);
  @override
  CardsListViewState createState() => CardsListViewState();
}

class CardsListViewState extends State<CardsListView> {
  // IMPORTANT! You can use widget.whereComeFrom to get the value.
  // You DON'T need to pass a variable to the state.
  var db = DatabaseHelper();
  List mainList = [];
  // Pass an actual BuildContext here.
  // The context given from State isn't the best option.
  // If you call this from a Builder, just pass the context.
  _showDialog(BuildContext context) {
    showDialog(
        context: context,
        builder: (BuildContext context){
          return StatefulBuilder(
            builder: (context,sett){
              void _showSearchReturn(String query) async{
              }
              return  Container(
              );
            },
          );
        }
    );
  }

  @override
  Widget build(BuildContext context){
    return Container();
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM