68 lines
1.5 KiB
Dart
68 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'platforms/base.dart';
|
|
import 'platforms/markdown.dart';
|
|
import 'platforms/widgets.dart';
|
|
|
|
abstract class EasyWebViewBase extends StatelessWidget {
|
|
const EasyWebViewBase({
|
|
Key? key,
|
|
required this.src,
|
|
required this.width,
|
|
required this.height,
|
|
required this.onLoaded,
|
|
required this.isMarkdown,
|
|
required this.convertToMarkdown,
|
|
required this.convertToWidgets,
|
|
required this.fallbackBuilder,
|
|
required this.options,
|
|
}) : super(key: key);
|
|
|
|
final String src;
|
|
final double? width, height;
|
|
final OnLoaded? onLoaded;
|
|
final bool isMarkdown;
|
|
final bool convertToMarkdown;
|
|
final bool convertToWidgets;
|
|
final WidgetBuilder? fallbackBuilder;
|
|
final WebViewOptions options;
|
|
|
|
bool canBuild() {
|
|
if (convertToWidgets) return true;
|
|
if (isMarkdown || convertToMarkdown) return true;
|
|
return false;
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (canBuild()) {
|
|
if (convertToWidgets) {
|
|
return WidgetsWebView(
|
|
key: key,
|
|
src: src,
|
|
width: width,
|
|
height: height,
|
|
onLoaded: onLoaded,
|
|
options: options,
|
|
);
|
|
}
|
|
|
|
if (isMarkdown || convertToMarkdown) {
|
|
return MarkdownWebView(
|
|
key: key,
|
|
src: src,
|
|
height: height,
|
|
width: width,
|
|
onLoaded: onLoaded,
|
|
options: options,
|
|
);
|
|
}
|
|
}
|
|
if (fallbackBuilder != null) {
|
|
return fallbackBuilder!(context);
|
|
} else {
|
|
return Placeholder();
|
|
}
|
|
}
|
|
}
|