Flutter错误:没有名为“child”的命名参数
我需要帮助,当我在 android studio 中运行下面的代码时,我收到以下错误: 错误:没有名为“child ”的命名参数
我还在下面发布了 android studio 生成的错误消息。
我运行了 flutter upgrade,现在我收到一个错误,提示 - [dart] 未定义命名参数“child”。项目是新创建的,默认代码没有改动,但是还是出现同样的错误:
import 'package:app_markeeting_and_promotion/models/home_model.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:device_apps/device_apps.dart';
import 'package:firebase_admob/firebase_admob.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class DownlaodsApp extends StatefulWidget {
@override
_DownlaodsAppState createState() => _DownlaodsAppState();
}
class _DownlaodsAppState extends State<DownlaodsApp> {
var stream = FirebaseFirestore.instance;
static const MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(keywords: ["Promotion","Kids","coins"]);
RewardedVideoAd rewardedVideoAd = RewardedVideoAd.instance;
int coins;
String appName;
@override
void initState() {
super.initState();
//"ca-app-pub-xxxxxxxxxxxx/5xxxxxxx75"
rewardedVideoAd.load(adUnitId: "ca-app-pub-xxxxxxxxxxxx/5xxxxxx5");
}
@override
Widget build(BuildContext context) {
final pro = Provider.of<HomeModel>(context);
return Scaffold(
appBar: AppBar(
title: Text("Download Apps"),
),
body: FutureBuilder(
future: stream.collection('apps').get(),
builder: (context,snapshot){
if(snapshot.hasData){
return ListView.builder(
itemCount: snapshot.data.docs.length,
itemBuilder: (ctx,i){
final List<DocumentSnapshot> documents = snapshot.data.docs;
if(documents[i]['coins'] > 2){
return ListTile(
// subtitle: Text(documents[i]['userId']),
// ignore: deprecated_member_use
trailing: FlatButton(
color: Colors.green,
onPressed: ()async{
setState(() {
appName = documents[i]['link'];
});
await pro.downloadApp(documents[i]['link']);
showDialog(
context: context,
child: AlertDialog(
title: Text("Claim Your Coin"),
content: Text("its verify That you installed the app"),
actions: [
// ignore: deprecated_member_use
FlatButton(onPressed: ()async{
print(appName);
Navigator.pop(context);
bool installed = await DeviceApps.isAppInstalled(appName);
if(installed == true){
print("installed=====================================");
print(documents[i].id);
await rewardedVideoAd.show();
RewardedVideoAd.instance.listener =
(RewardedVideoAdEvent event, {String rewardType, int rewardAmount}) {
if (event == RewardedVideoAdEvent.rewarded) {
setState(() {
coins = rewardAmount;
});
}
};
print(coins);
final pro = Provider.of<HomeModel>(context,listen: false);
await pro.addDownload(documents[i].id, coins);
print("app called");
}else{
print(documents[i].id);
await rewardedVideoAd.show();
RewardedVideoAd.instance.listener =
(RewardedVideoAdEvent event, {String rewardType, int rewardAmount}) {
if (event == RewardedVideoAdEvent.rewarded) {
setState(() {
coins = rewardAmount;
});
}
};
print("Not Installed");
showDialog(
context: context,
child: AlertDialog(
content: Text("You Must installed the app to claim your coins",style: TextStyle(color: Colors.red,),),
title: Text("App Not Installed"),
actions: [
// ignore: deprecated_member_use
FlatButton(onPressed: (){Navigator.pop(context);}, child: Text("Okay"))
],
)
);
}
}, child: Text("Claim"))
],
)
);
},
child: Text("Download"),),
title: Text("https://play.google.com/store/apps/details?id=${documents[i]['link']}"),
);
}else{
return Container();
}
},
);
}else{
return Center(child: CircularProgressIndicator(),);
}
},
),
);
}
}
回答
看起来你在 Alert/ShowDailog 中提到了“child”属性,确保你的 Alert 和 ShowDailog 匹配下面的代码,
return showDialog(
context: context, // this context should be passed to Future Function as parameter
builder: (BuildContext cx) {
return AlertDialog(
content: Text("Alert"),
actions: [
FlatButton(
child: Text("Ok"),
onPressed: () {
Navigator.pop(cx);
}),
],
);
},
);
请提供您的代码示例以了解您的尝试。