Flutter, WebView пустая страница с использованием провайдера - PullRequest
0 голосов
/ 06 марта 2020

У меня есть поставщик поверх MyApp, и веб-просмотр все еще открывается с пустым экраном. Без ошибок, без предложений это просто открытие с пустым экраном и не загрузка. Если я поместил веб-адрес в URL-адрес работает нормально, но я хочу иметь эту динамику c.

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,
        )

1 Ответ

1 голос
/ 06 марта 2020

Вы можете скопировать вставленный полный код кода ниже
В атрибуте value необходимо передать переменную, а не класс
В вашем фрагменте кода events равно array это может быть опечатка

фрагмент кода

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,
    );
  }
}
...