“'borderRadius!=空I / flutter(28205):||剪切器!= null':不正确”为什么我收到此错误?

时间:2018-12-20 06:26:34

标签: flutter

我正在尝试从api中获取数据,并将其显示在我的卡片列表中。但是每当我加载应用程序时,我都会收到此错误

'borderRadius != null
I/flutter (28205): || clipper != null': is not true.

,我不确定该如何解决。

我尝试在发生错误的行中进行更改,但错误保持不变。

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:news/model/businessModel.dart';
import 'package:http/http.dart' as http;

class Discover extends StatefulWidget {
 final Source source;

 Discover({Key key, this.source}) : super(key: key);

 @override
_DiscoverState createState() => _DiscoverState();
}

class _DiscoverState extends State<Discover> {
 String API_KEY = '0ca85f22bce44565ba4fee8d2224adb5';

 Future<List<Articles>> fetchArticleBySource() async {
 final response = await http.get(
    'https://newsapi.org/v2/top-headlines? 
category=business&language=en&apiKey=${API_KEY}');

if (response.statusCode == 200) {
  List articles = json.decode(response.body)['articles'];
  return articles.map((article) => new 
Articles.fromJson(article)).toList();
} else {
  throw Exception('Failed to load article list');
}
}

var list_articles;
var refreshKey = GlobalKey<RefreshIndicatorState>();

@override
void initState() {
// TODO: implement initState
super.initState();
refreshListArticle();
}

Future<Null> refreshListArticle() async {
refreshKey.currentState?.show(atTop: false);

setState(() {
  list_articles = fetchArticleBySource();
});
}

@override
Widget build(BuildContext context) {
return Padding(
  padding: const EdgeInsets.only(
    left: 15.0,
    top: 15.0,
    right: 15.0,
  ),
  child: ListView(
    children: <Widget>[
      topArea(),
      SizedBox(
        height: 10.0,
      ),
      slideCard(),
      SizedBox(
        height: 5.0,
      ),
      Padding(
        padding: const EdgeInsets.only(left: 4.0),
        child: Divider(),
      ),
      recentNews(),
    ],
    ),
  );
 }

 Widget topArea() {
 return Row(
  mainAxisAlignment: MainAxisAlignment.spaceBetween,
  children: <Widget>[
    Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        Text(
          "WEDNESDAY, NOVEMBER 29",
          style: TextStyle(color: Colors.grey, fontWeight: 
  FontWeight.bold),
        ),
        SizedBox(
          height: 5.0,
        ),
        Text(
          "TOP NEWS",
          style: TextStyle(fontSize: 25.0, fontWeight: FontWeight.bold),
        ),
      ],
    ),
    Hero(
      tag: 'img',
      child: InkWell(
        //onTap: () => Navigator.push(context, MaterialPageRoute(builder: 
 (context) => )),
        child: CircleAvatar(
          radius: 25.0,
          //backgroundColor: Colors.transparent,
          backgroundImage: NetworkImage(
            "https://images.pexels.com/photos/1138409/pexels-photo- 
 1138409.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260",
          ),
        ),
      ),
    ),
  ],
  );
  }

 Widget slideCard() {
  return FutureBuilder<List<Articles>>(
   future: list_articles,
   builder: (context, snapshot) {
     if (snapshot.hasError) {
      return Text("${snapshot.error}");
    } else if (snapshot.hasData) {
      List<Articles> articles = snapshot.data;
      return Container(
        height: 310.0,
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(0.0),
        ),
        child: ListView(
          scrollDirection: Axis.horizontal,
          children: articles
              .map((article) => GestureDetector(
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: <Widget>[
                        Expanded(
                          child: Card(
                            elevation: 3.0,
                            shape: RoundedRectangleBorder(
                              borderRadius: BorderRadius.circular(10.0),
                            ),
                            child: ClipRRect(
                              clipper: ,
                              child: article.urlToImage != null
                                  ? Image.network(article.urlToImage)
                                  : Image.asset('images/logo.jpg'),
                            ),
                          ),
                        ),
                        SizedBox(
                          height: 10.0,
                        ),
                        Padding(
                          padding: const EdgeInsets.only(left: 4.0),
                          child: Text("${article.title}",
                            style: TextStyle(
                                color: Colors.blueAccent,
                                fontSize: 12.0,
                                fontWeight: FontWeight.bold),
                          ),
                        ),
                        SizedBox(
                          height: 10.0,
                        ),
                        Padding(
                          padding: const EdgeInsets.only(left: 4.0),
                          child: Text(
                            "${article.description}",
                            style: TextStyle(
                                color: Colors.black,
                                fontSize: 14.0,
                                fontWeight: FontWeight.bold),
                          ),
                        ),
                      ],
                    ),
                  ))
              .toList(),
          ),
        );
      }
       return CircularProgressIndicator();
    },
   );

  }



  Widget recentNews() {
   return Column(
    children: <Widget>[
     Padding(
      padding: const EdgeInsets.only(left: 4.0),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: <Widget>[
          Text(
            "Recent News",
            style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold),
          ),
          Align(
            alignment: Alignment.centerRight,
            child: Text(
              "See All",
              style: TextStyle(color: Colors.lightBlueAccent),
            ),
          )
        ],
      ),
     ),
     SizedBox(
      height: 7.0,
     ),
     Container(
      height: 200.0,
      child: ListView(
        scrollDirection: Axis.horizontal,
        children: <Widget>[
          Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Expanded(
                child: Card(
                  elevation: 3.0,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(10.0),
                  ),
                  child: ClipRRect(
                    child: Image.network(
                        "https://images.pexels.com/photos/935789/pexels-photo-935789.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260"),
                    borderRadius: BorderRadius.circular(10.0),
                  ),
                ),
              ),
              SizedBox(
                height: 10.0,
              ),
              Padding(
                padding: const EdgeInsets.only(left: 4.0),
                child: Text(
                  "STARTUPS",
                  style: TextStyle(
                      color: Colors.blueAccent,
                      fontSize: 12.0,
                      fontWeight: FontWeight.bold),
                ),
              ),
              SizedBox(
                height: 10.0,
              ),
              Padding(
                padding: const EdgeInsets.only(left: 4.0),
                child: Text(
                  "Top startups that are \nchanging the way we travel",
                  style: TextStyle(
                      color: Colors.black,
                      fontSize: 15.0,
                      fontWeight: FontWeight.bold),
                ),
              ),
            ],
          ),
          Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Expanded(
                child: Card(
                  elevation: 3.0,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(10.0),
                  ),
                  child: ClipRRect(
                    child: Image.network(
                        "https://images.pexels.com/photos/935789/pexels-photo-935789.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260"),
                    borderRadius: BorderRadius.circular(10.0),
                  ),
                ),
              ),
              SizedBox(
                height: 10.0,
              ),
              Padding(
                padding: const EdgeInsets.only(left: 4.0),
                child: Text(
                  "STARTUPS",
                  style: TextStyle(
                      color: Colors.blueAccent,
                      fontSize: 12.0,
                      fontWeight: FontWeight.bold),
                ),
              ),
              SizedBox(
                height: 10.0,
              ),
              Padding(
                padding: const EdgeInsets.only(left: 4.0),
                child: Text(
                  "Top startups that are \nchanging the way we travel",
                  style: TextStyle(
                      color: Colors.black,
                      fontSize: 15.0,
                      fontWeight: FontWeight.bold),
                ),
              ),
            ],
          ),
          Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Expanded(
                child: Card(
                  elevation: 3.0,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(10.0),
                  ),
                  child: ClipRRect(
                    child: Image.network(
                        "https://images.pexels.com/photos/935789/pexels-photo-935789.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260"),
                    borderRadius: BorderRadius.circular(10.0),
                  ),
                ),
              ),
              SizedBox(
                height: 10.0,
              ),
              Padding(
                padding: const EdgeInsets.only(left: 4.0),
                child: Text(
                  "STARTUPS",
                  style: TextStyle(
                      color: Colors.blueAccent,
                      fontSize: 12.0,
                      fontWeight: FontWeight.bold),
                ),
              ),
              SizedBox(
                height: 10.0,
              ),
              Padding(
                padding: const EdgeInsets.only(left: 4.0),
                child: Text(
                  "Top startups that are \nchanging the way we travel",
                  style: TextStyle(
                      color: Colors.black,
                      fontSize: 15.0,
                      fontWeight: FontWeight.bold),
                ),
              ),
            ],
          ),
          Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Expanded(
                child: Card(
                  elevation: 3.0,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(10.0),
                  ),
                  child: ClipRRect(
                    child: Image.network(
                        "https://images.pexels.com/photos/935789/pexels-photo-935789.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260"),
                    borderRadius: BorderRadius.circular(10.0),
                  ),
                ),
              ),
              SizedBox(
                height: 10.0,
              ),
              Padding(
                padding: const EdgeInsets.only(left: 4.0),
                child: Text(
                  "STARTUPS",
                  style: TextStyle(
                      color: Colors.blueAccent,
                      fontSize: 12.0,
                      fontWeight: FontWeight.bold),
                ),
              ),
              SizedBox(
                height: 10.0,
              ),
              Padding(
                padding: const EdgeInsets.only(left: 4.0),
                child: Text(
                  "Top startups that are\n changing the way we travel",
                  style: TextStyle(
                      color: Colors.black,
                      fontSize: 15.0,
                      fontWeight: FontWeight.bold),
                ),
              ),
            ],
          ),
        ],
      ),
    ),
  ],
);
}
}

1 个答案:

答案 0 :(得分:2)

如果仔细观察,您会看到一个ClipRRect的裁剪器为空,因此为空。

根据错误消息,如果clipper为null,则必须指定borderRadius

                    child: ClipRRect(
                      clipper: ,
                      child: article.urlToImage != null
                          ? Image.network(article.urlToImage)
                          : Image.asset('images/logo.jpg'),
                    ),