首页 > 解决方案 > 新路线 [webview] 未全高显示

问题描述

webview按下一行后,我正在将应用程序屏幕导航到listview. 我创建了两个routes,它正在正确导航到webviewfrom listview

但是 的高度webview与设备屏幕的高度不匹配,即listview当我热重载应用程序时,它在屏幕下方显示之前的路线( )webview未覆盖。

下面是我的main.dart文件。

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:connectivity/connectivity.dart';
import 'package:toast/toast.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';

void main() => runApp(new MyApp());
bool isData = false;

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Shop App',
      theme
          : new ThemeData(
          primaryColor: Color.fromRGBO(58, 66, 86, 1.0), fontFamily: 'Raleway'),
      home: MyHomePage(title: 'Shop App'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;


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

class _MyHomePageState extends State<MyHomePage> {

  List<bool> inputs = new List<bool>();
  List list = List();
  var isLoading = false;
  var connectivityResult;
  _fetchJSON() async {
    setState(() {
      isLoading = true;
    });
    var response = await http.get(
      'http://indiagovt.org/android/flutter.php',
      headers: {"Accept": "Application/json"},
    );
    if(response.statusCode == 200) {
      list = json.decode(response.body) as List;
      setState(() {
        isLoading = false;
      });
    } else {
      print('Something went wrong');
    }
  }

  @override
  void initState() {
    super.initState();
    setState(() {
      _fetchJSON();
    });
  }
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      backgroundColor: Color.fromRGBO(58, 66, 86, 1.0),
      appBar: new AppBar(
        title: new Text('Shop App'),
      ),
      body: isLoading ? Center (
        child: CircularProgressIndicator(),
      ):
          new ListView.builder(
          itemCount: list.length,
          itemBuilder: (BuildContext context, int index){
              return new Card(
                child: new Container(
                  padding: new EdgeInsets.all(10.0),
                  child: new Column(
                    children: <Widget>[
                      new ListTile(
                        title: new Text(list [index]['title']),
                        subtitle: new Text(list [index]['descr']),
                        leading: CircleAvatar(
                          child: Image.network(
                            list [index]['icon'],
                          ),
                        ),
                        onTap: () {
                          Navigator.push(
                            context,
                            MaterialPageRoute(
                              builder: (context) => webView(url: list[index]['link'], title: list[index]['name']),//goes to the next page & passes value of url and title to it
                            ),
                          );
                        },
                      )
                    ],
                  ),

                ),
              );
          }
      ),
    );
  }
}

class webView extends StatelessWidget {
  final String url;
  final String title;
  webView({Key key, @required this.url, @required this.title}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Color.fromRGBO(58, 66, 86, 1.0),
        appBar: AppBar(
          title: Text(title),
        ),
        body: new MaterialApp(
          routes: {
            "/": (_) => new WebviewScaffold(
              url: url,
              appBar: new AppBar(

              ),
              withJavascript: true,
              withLocalStorage: true,

            )
          },
        )
    );
  }

}

应用截图: WebView 截图:主屏幕/列表视图屏幕截图 网页视图截图

请帮我解决这个问题。

标签: dartflutter

解决方案


推荐阅读