颤抖的AppBar

时间:2020-02-13 07:40:17

标签: flutter

我在flutter中设计了一个新闻应用程序,其中有一个带有标签的应用程序栏。在tabbarview中,我有一个新闻列表。单击新闻后,它将显示新闻的详细说明和图像(如图中所示)。当我尝试将应用程序栏放入该文件中时。出现两个应用栏。可能的解决方法是什么?

enter image description here

这是代码:

appBar: AppBar(
            title: Text(""),
            backgroundColor: Color(0xFF125688), //#125688 //FFFF1744
            actions: <Widget>[
              Container(
                alignment: Alignment.topRight,
                child: FlatButton(
                    onPressed: () {},
                    padding: EdgeInsets.fromLTRB(0, 10.0, 8.0, 0),
                    child: Text(
                      date,
                      style: TextStyle(
                        color: Colors.white,
                      ),
                    )),
              )
            ],
            bottom: TabBar(
              tabs: <Widget>[
                Tab(text: "TOP-HEADLINES"),
                Tab(text: "LATEST-NEWS"),
                Tab(text: "SPORTS"),
                Tab(text: "CRIME-NEWS"),
              ],
              isScrollable: true,
            ),
          ),
          body: TabBarView(children: [
            TopHeadlines(),
            LatestNews(),
            Sports(),
            CrimeNews(),
              ],
            ),

TOPHEADLINES()代码

class TopHeadlines extends StatefulWidget {
  int index;
  String value_image,value_description,value_title;


  TopHeadlines({Key key,this.value_image,this.value_description,this.value_title,this.index}) : super(key:key);
  @override
  _topHeadlines createState() => _topHeadlines();


}

class _topHeadlines extends State<TopHeadlines> {
  List<News> dataList = List();
  bool _isLoading = false;
  BuildContext context1;


  Future<String> loadFromAssets() async {
    DateTime oops = DateTime.now();
    String d_date = DateFormat('ddMMyyyy').format(oops);


    var url = 'https://www.example.com/json-12.json';


    print(url);
    var response = await http
        .get('$url', headers: {"charset": "utf-8", "Accept-Charset": "utf-8"});
    String utfDecode = utf8.decode(response.bodyBytes);

    return utfDecode;
  }

  Future loadyourData() async {
    setState(() {
      _isLoading = true;
    });

    String jsonString = await loadFromAssets();

    String newStr = jsonString.substring(1, jsonString.length - 1);

    print(newStr);
    Map newStringMap = json.decode(newStr);
    var list = new List();
    newStringMap.forEach((key, value) {
      list.add(value);
    });

    for (var newsList in list) {
      var news = News.fromJson(newsList);
      dataList.add(news);
    }
    print('This is the length' + dataList.length.toString());
    print(dataList[0].title);
    setState(() {
      _isLoading = false;
    });
  }

  @override
  void initState() {
    super.initState();

    loadyourData();
  }

  @override
  Widget build(BuildContext context) {
    DateTime oops = DateTime.now();

    return MaterialApp(
        debugShowCheckedModeBanner: false,
        home: Container(
          child: _isLoading ? Center(
            child: CircularProgressIndicator(),) :
          ListView.builder(
            itemCount: dataList.length, itemBuilder: (context, index) {
            return SizedBox(
                          height: 130.0,
                          child: Card(
                            color: Colors.white,
                            child: Column(
                              crossAxisAlignment: CrossAxisAlignment.start,
                              children: <Widget>[
                                InkWell(
                                  onTap: (){
                                 //   dataList;
                                      Navigator.push(context, MaterialPageRoute(builder: (context) {
                                        print(index);
                                        return Newsdetail(value_image: dataList[index].image,value_description: dataList[index].description,value_title: dataList[index].title, );
                                    }));
                                  },
                                  child: Padding(
                                    padding: const EdgeInsets.all(8.0),
                                    child: Row(
                                      children: <Widget>[
                                        Expanded(
                                            child: Image.network(
                                              dataList[index].image,
                                              height: 92.5,
                                              width: 75.0,
                                            )),
                                        Expanded(
                                          child: Text(
                                            dataList[index].title,
                                            style: TextStyle(
                                              //title
                                              fontSize: 15.0, color: Colors.grey,
                                            ),
                                          ),
                                        )
                                      ],
                                    ),
                                  ),
                                ),
                              ],
                            ),
                          ),
                        );
                },
            ),
    ));
  }
}

1 个答案:

答案 0 :(得分:1)

从以下视图中删除appBar:

TopHeadlines(),
LatestNews(),
Sports(),
CrimeNews(),

仅通过返回要显示的容器或小部件来返回要显示的内容