简体   繁体   English

如何修复太多位置 arguments:预期 0,但找到 1。 在 flutter

[英]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.

相关问题 Flutter:位置 arguments 太多:预期为 0,但找到了 1。 这里:AppBar( - Flutter: Too many positional arguments: 0 expected, but 1 found. Here: AppBar( Dart Flutter - 太多位置 arguments:预期 2 个,但找到 3 个。 错误 - Dart Flutter - Too many positional arguments: 2 expected, but 3 found. error “位置参数太多:预期为 0,但找到了 1 个。” - 'Too many positional arguments: 0 expected, but 1 found.' SizedBox() 错误“位置 arguments 太多:预期有 2 个,但找到了 4 个。尝试删除多余的 arguments。” flutter - SizedBox() error "Too many positional arguments: 2 expected, but 4 found. Try removing the extra arguments." flutter 颤振:位置参数太多:预期为 0,但发现为 1 - flutter: Too many positional arguments: 0 expected, but 1 found 太多位置 arguments:预期 0,但找到 6 flutter - Too many positional arguments: 0 expected, but 6 found flutter 位置参数太多:预期为 0,但找到了 2 个。 &amp; 死代码 - Too many positional arguments: 0 expected, but 2 found. & dead code 位置参数太多:预期为 0,但找到 2。 尝试删除额外的位置参数,或指定命名参数的名称 - Too many positional arguments: 0 expected, but 2 found. Try removing the extra positional arguments, or specifying the name for named arguments flutter 错误:位置 arguments 太多:预期为 0,但在流生成器中找到 1 - flutter error: Too many positional arguments: 0 expected, but 1 found in streambuilder Flutter 错误:太多位置 arguments:预期 0,但找到 1 - Flutter Error: Too many positional arguments: 0 expected, but 1 found
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM