Flutter,使用提供程序的WebView空页面

问题描述 投票:0回答:1

我在MyApp的顶部有提供程序,并且Web视图仍在打开并显示空白屏幕。没有错误,没有建议,只是在黑屏时打开并没有加载。如果我在网址中输入网址可以正常工作,但我想保持动态。

runApp(
    Provider<Events>.value(
      value: Events(),
      child: MyApp(),
    ),
  );
class Events {
  final String imagePath, site;

Events({
  this.imagePath, this.site
});

final events = [
  castel,
  lake,
];
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart';
import '../model/events.dart';
import './flutter_web.dart';

class Site extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final events = Provider.of<Events>(context);

    return Container(
      padding: const EdgeInsets.all(4.0),
      child: Container(
        child: IconButton(
          onPressed: () => Navigator.of(context).push(
            MaterialPageRoute(
              builder: (context) => FlutterWeb(events.site),
            ),
          ),
          icon: Icon(
            FontAwesomeIcons.internetExplorer,
            size: 30.0,
            color: Colors.lightBlue,
          ),
        ),
      ),
    );
  }
}
return WebView(
          initialUrl: events.site,
        )
flutter webview provider
1个回答
1
投票

您可以在下面复制粘贴运行完整代码在value属性中,您需要传递变量而不是类在您的代码段中,eventsarray,可能是拼写错误

代码段

void main() {
  final events = Events(imagePath: "castel", site: "https://flutter.dev/");

  runApp(
    Provider<Events>.value(
      value: events,
      child: MyApp(),
    ),
  );
}

工作演示

enter image description here

完整代码

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:webview_flutter/webview_flutter.dart';

class Events {
  final String imagePath, site;

  Events({this.imagePath, this.site});
}

void main() {
  final events = Events(imagePath: "castel", site: "https://flutter.dev/");

  runApp(
    Provider<Events>.value(
      value: events,
      child: MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: Site());
  }
}

class Site extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var events = Provider.of<Events>(context);

    return Scaffold(
      body: Center(
        child: Container(
          padding: const EdgeInsets.all(4.0),
          child: Container(
            child: IconButton(
              onPressed: () => Navigator.of(context).push(
                MaterialPageRoute(
                  builder: (context) => FlutterWeb(events.site),
                ),
              ),
              icon: Icon(
                FontAwesomeIcons.internetExplorer,
                size: 30.0,
                color: Colors.lightBlue,
              ),
            ),
          ),
        ),
      ),
    );
  }
}

class FlutterWeb extends StatelessWidget {
  String site;
  FlutterWeb(this.site);

  @override
  Widget build(BuildContext context) {
    return WebView(
      initialUrl: site,
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.