[英]How to fix too many positional arguments: 0 expected, but 1 found. in flutter
When I made my first project about a news app, I got an error.当我做第一个关于新闻应用程序的项目时,我遇到了一个错误。
this is my code这是我的代码
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:last_news/state.dart';
import 'package:webview_flutter/webview_flutter.dart';
class NewsDetail extends StatefulWidget {
@override
State<NewsDetail> createState() => _NewsDetailState();
}
class _NewsDetailState extends State<NewsDetail> {
double progress = 0;
final Completer<WebViewController> _controller = Completer<WebViewController>();
@override
void initState() {
// TODO: implement initState
super.initState();
if(Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
}
@override
Widget build(BuildContext context,) {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarColor: Color(0xFFA51234)));
return MaterialApp(
home: Scaffold(
body: SafeArea(child: Container(child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(children: [
IconButton(
onPressed: () => Navigator.of(context).pop(),
icon: Icon(Icons.arrow_back, color:Colors.black),
alignment: Alignment.topLeft,)
],),
Container(
padding: EdgeInsets.all(10.0),
child: progress < 1.0 ? LinearProgressIndicator(value: progress) : Container(),
),
Expanded(child: WebView(
initialUrl: context.read(urlState).state,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (controller) {
_controller.complete(controller);
},
),)
],),)),),
);
}
}
I got this error on initialUrl: context.read( urlState ).state,我在 initialUrl 上收到此错误:context.read( urlState ).state,
Too many positional arguments: 0 expected, but 1 found.
Try removing the extra arguments.
This code urlState此代码 urlState
import 'package:flutter_riverpod/flutter_riverpod.dart';
final urlState = StateProvider(((ref) => ''));
Please help me to fix this请帮我解决这个问题
I tried adding import 'package:flutter_bloc/flutter_bloc.dart';我尝试添加import 'package:flutter_bloc/flutter_bloc.dart'; because the "context.read" have a red underline.因为“context.read”有红色下划线。 And then, the "urlState" have a red underline.然后,“urlState”带有红色下划线。
Another Error code on HomePage主页上的另一个错误代码
import 'dart:io';
import 'package:bubble_tab_indicator/bubble_tab_indicator.dart';
import 'package:carousel_slider/carousel_options.dart';
import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:last_news/article.dart';
import 'package:last_news/network/api_request.dart';
import 'package:last_news/news.dart';
import 'package:last_news/state.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:riverpod/riverpod.dart';
class Home extends StatefulWidget {
Home({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<Home> createState() => _HomeState();
}
class _HomeState extends State<Home> with SingleTickerProviderStateMixin{
final List<Tab> tabs = <Tab>[
new Tab(text: 'General'),
new Tab(text: 'Technology'),
new Tab(text: 'Sport'),
new Tab(text: 'Business'),
new Tab(text: 'Entertainment'),
new Tab(text: 'Health'),
];
late TabController _tabController;
@override
void initState() {
// TODO: implement initState
super.initState();
_tabController = new TabController(length: tabs.length, vsync: this);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('News App'),
bottom: TabBar(
isScrollable: true,
unselectedLabelColor: Colors.grey,
labelColor: Colors.white,
indicatorSize: TabBarIndicatorSize.tab,
indicator: BubbleTabIndicator(
indicatorHeight: 25.0,
indicatorColor: Colors.blueAccent,
tabBarIndicatorSize: TabBarIndicatorSize.tab,
),
tabs: tabs,
controller: _tabController,
),
),
body: TabBarView(
controller: _tabController,
children: tabs.map((Tab){
return FutureBuilder(
future: fetchNewsByCategory(Tab.text!),
builder: (context, snapshot) {
if(snapshot.hasError)
return Center(child: Text('${snapshot.error}'),);
else if(snapshot.hasData)
{
var newsList = snapshot.data as News;
var sliderList = newsList.articles != null ?
newsList.articles!.length > 10 ?
newsList.articles!.getRange(0, 10).toList()
: newsList.articles!.take(newsList.articles!.length).toList()
: [];
var contentList = newsList.articles !=null ?
newsList.articles!.length > 10 ?
newsList.articles!.getRange(11, newsList.articles!.length - 1).toList()
: [] : [];
return SafeArea(child: Column(
children: [
CarouselSlider(
options: CarouselOptions(
aspectRatio: 16/9,
enlargeCenterPage: true,
viewportFraction: 0.8,
),
items: sliderList.map((item){
return Builder(builder: (context){
return GestureDetector(
onTap: () {
context.read(urlState).state = item.url;
Navigator.pushNamed(context, '/detail');
}, child: Stack(children: [
ClipRRect(
borderRadius: BorderRadius.circular(8),
child: Image.network(
'${item.urlToImage}',
fit: BoxFit.cover,),
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
color: Color(0xAA333639),
child: Padding(
padding: const EdgeInsets.all(8), child:
Text('${item.title}',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Colors.white,
fontSize: 16,
fontWeight: FontWeight.bold
),
),
),
),
],
)
]),
);
});
}).toList(),
),
Divider(thickness: 3),
Padding(padding: const EdgeInsets.only(left: 8),
child: Text('Trending',
style: TextStyle(fontSize: 26,fontWeight: FontWeight.bold),
),
),
Divider(thickness: 3),
Expanded(child: ListView.builder(
itemCount: contentList.length,
itemBuilder:(context, index) {
return GestureDetector(onTap: (){
context.read(urlState).state = contentList[index].url;
Navigator.pushNamed(context, '/detail');
}, child:
ListTile(
leading: ClipRRect(
borderRadius: BorderRadius.circular(8),
child: Image.network('${contentList[index].urlToImage}',
fit: BoxFit.cover,
height: 80,
width: 80,
),
),
title: Text('${contentList[index].title}',
style: TextStyle(fontWeight: FontWeight.bold)),
subtitle: Text('${contentList[index].publishedAt}',
style: TextStyle(fontStyle: FontStyle.italic)),
),);
}))
],
));
}
else return Center(child: CircularProgressIndicator(),);
});
}).toList(),
),
);
}
}
This error on这个错误
return Builder(builder: (context){
return GestureDetector(
onTap: () {
context.read(urlState).state = item.url;
Navigator.pushNamed(context, '/detail');
},
And和
Expanded(child: ListView.builder(
itemCount: contentList.length,
itemBuilder:(context, index) {
return GestureDetector(onTap: (){
context.read(urlState).state = contentList[index].url;
Navigator.pushNamed(context, '/detail');
},
Both of these codes have the same error这两个代码都有相同的错误
The webview widget accepts initialUrl as a string, It has no any method as you added above. webview 小部件接受 initialUrl 作为字符串,它没有您在上面添加的任何方法。
Therefore the code could be written因此代码可以写成
Expanded(
child: WebView(
initialUrl: '', // This should be string so you can get data and convert it to string
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (controller) {
_controller.complete(controller);
},
),
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.