Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 20 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ ZikZak AI is an AI-Powered Price Comparison app that you scan barcodes, and disc
<a href="https://apps.apple.com/tr/app/zik-zak/id1563425450"><img src="assets/app-store-badge.png" width="160" style="margin-right: 8px;"></a>
<a href="https://play.google.com/store/apps/details?id=dev.zuzu.zingo"><img src="assets/google-play-badge.png" width="160"></a>

[**Documentation**](https://arrrrny.github.io/zikzak_inappwebview/) | [**Pub.dev**](https://pub.dev/packages/zikzak_inappwebview) | [**API Reference**](https://pub.dev/documentation/zikzak_inappwebview/latest/)
[**Documentation**](https://arrrrny.github.io/zikzak_inappwebview/) | [**Pub.dev**](https://pub.dev/packages/zikzak_inappwebview) | [**API Reference**](https://pub.dev/documentation/zikzak_inappwebview/latest/) | [**Changelog**](https://github.com/arrrrny/zikzak_inappwebview/blob/master/zikzak_inappwebview/CHANGELOG.md)

</div>

Expand All @@ -44,7 +44,7 @@ Add `zikzak_inappwebview` to your `pubspec.yaml`:

```yaml
dependencies:
zikzak_inappwebview: ^4.0.0
zikzak_inappwebview: ^4.2.3
```

## οΏ½ Requirements
Expand Down Expand Up @@ -75,6 +75,24 @@ InAppWebView(
)
```

## πŸ“¦ Migration from flutter_inappwebview

Simply replace the import:

```dart
// Before
import 'package:flutter_inappwebview/flutter_inappwebview.dart';

// After
import 'package:zikzak_inappwebview/zikzak_inappwebview.dart';
```

The API is nearly identical. Version 4.x.x corresponds to upstream 6.x.x.

## πŸ“Š Project Stats

We track and triage all 156+ open issues from the upstream repository. Check out our [UPSTREAM_ISSUES_TRIAGE.md](./UPSTREAM_ISSUES_TRIAGE.md) for the full analysis.

## 🀝 Contributing

Contributions are welcome! If you find a bug or have a feature request, please [open an issue](https://github.com/arrrrny/zikzak_inappwebview/issues).
Expand Down
462 changes: 252 additions & 210 deletions UPSTREAM_ISSUES_TRIAGE.md

Large diffs are not rendered by default.

30 changes: 26 additions & 4 deletions scripts/prepare_for_publish.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ if [ "$#" -eq 0 ]; then
# Use full path to pubspec, and ensure PROJECT_DIR is defined before use
PROJECT_DIR_FIXED="$( cd "$(dirname "$0")/.." >/dev/null 2>&1 ; pwd -P )"
DETECTED_VERSION=$(grep "^version:" "$PROJECT_DIR_FIXED/zikzak_inappwebview/pubspec.yaml" | sed 's/version: //' | tr -d '[:space:]')

if [ -n "$DETECTED_VERSION" ]; then
echo -e "${GREEN}Detected version: $DETECTED_VERSION${NC}"
VERSION=$DETECTED_VERSION
Expand Down Expand Up @@ -216,8 +216,20 @@ for pkg in "${PACKAGES[@]}"; do
fi
done

# Generate changelog content from git history
echo -e "${BLUE}Generating changelog from git history...${NC}"
# Generate changelog content
# First, check if root CHANGELOG.md already has an entry for this version
ROOT_CHANGELOG="$ROOT_DIR/zikzak_inappwebview/CHANGELOG.md"
EXISTING_ENTRY=""

if [ -f "$ROOT_CHANGELOG" ]; then
EXISTING_ENTRY=$(awk "/^## $VERSION - /{found=1; next} /^## [0-9]+\\.[0-9]+\\.[0-9]+/{if(found) exit} found" "$ROOT_CHANGELOG" 2>/dev/null || true)
fi

if [ -n "$EXISTING_ENTRY" ]; then
echo -e "${GREEN}Found existing changelog entry for version $VERSION in root CHANGELOG.md, using it...${NC}"
CHANGELOG_CONTENT="$EXISTING_ENTRY"
else
echo -e "${BLUE}No existing changelog entry found. Generating from git history...${NC}"
CHANGELOG_CONTENT=""
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")

Expand Down Expand Up @@ -249,10 +261,15 @@ if [ ! -z "$FIXES" ]; then
"
fi

# If no content found, use a default message
# If no content found, use actual commit messages as fallback
if [ -z "$CHANGELOG_CONTENT" ]; then
CHANGELOG_CONTENT=$(echo "$LOGS" | sed 's/^/* /')
fi
# If still empty (no commits at all), ultimate fallback
if [ -z "$CHANGELOG_CONTENT" ]; then
CHANGELOG_CONTENT="* Prepare for publishing version $VERSION"
fi
fi

echo -e "${YELLOW}Generated Changelog Content:${NC}"
echo -e "$CHANGELOG_CONTENT"
Expand All @@ -268,6 +285,11 @@ fi
CURRENT_DATE=$(date +"%Y-%m-%d")
for pkg in "${PACKAGES[@]}"; do
if [ -f "$ROOT_DIR/$pkg/CHANGELOG.md" ]; then
# Skip root package if entry already existed there (no need to duplicate)
if [ "$pkg" == "zikzak_inappwebview" ] && [ -n "$EXISTING_ENTRY" ]; then
echo -e "${GREEN}Root CHANGELOG.md already has entry for $VERSION, skipping...${NC}"
continue
fi
echo -e "${BLUE}Updating CHANGELOG.md in $pkg${NC}"
# Add new version entry at the top of the CHANGELOG
# We use a temporary file to handle the multiline insertion correctly
Expand Down
90 changes: 56 additions & 34 deletions website/docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,82 +2,104 @@
sidebar_position: 1
---

# Introduction
# Getting Started

**ZikZak InAppWebView** is a feature-rich Flutter plugin that allows you to add an inline WebView, use a headless WebView, and open an in-app browser window.
## What is ZikZak InAppWebView?

It provides a unified API for **Android, iOS, Web, macOS, Windows, and Linux**.
**ZikZak InAppWebView** is a feature-rich Flutter plugin that allows you to embed WebView widgets, run headless WebViews, and open in-app browser windows. It's a community-driven fork of `flutter_inappwebview` with active maintenance, faster bug fixes, and modern platform support.

## Features
### Key Features

- **Inline WebView**: Embed web content directly into your Flutter widgets.
- **In-App Browser**: Open a full-featured browser window within your app.
- **Headless WebView**: Run web content in the background without a UI.
- **Cross-Platform**: Consistent API across 6 platforms.
- **Rich API**: Cookie management, script injection, custom headers, content blocking, and more.
- **Security**: Google Safe Browsing, certificate pinning, and HTTPS-only mode.
- **Cross-Platform**: Android, iOS, Web, macOS, Windows, Linux β€” one unified API
- **Rich API**: Complete control over navigation, cookies, JavaScript, content blocking, file picking, and more
- **JavaScript Bridge**: Full bidirectional communication between Dart and JavaScript
- **Headless WebView**: Run WebViews in the background without UI
- **In-App Browser**: Full browser experience within your app
- **Modern Security**: Proactive security patches and latest platform API support

## Installation

Add this to your package's `pubspec.yaml` file:
Add `zikzak_inappwebview` to your `pubspec.yaml`:

```yaml
dependencies:
zikzak_inappwebview: ^4.0.0
zikzak_inappwebview: ^4.2.3
```

Then run:
Then import the package:

```bash
flutter pub get
```dart
import 'package:zikzak_inappwebview/zikzak_inappwebview.dart';
```

## Platform Requirements
## Requirements

### v4.0.0 (Current)
- **Dart**: `>=3.0.0 <4.0.0`
- **Flutter**: `>=3.10.0`
- **Android**: minSdk 21+, compileSdk 34+
- **iOS**: 12.0+
- **macOS**: 10.14+
- **Windows**: Windows 10/11
- **Linux**: Any modern distribution (GTK 3+)
- **Web**: Any modern browser
| Platform | Minimum Version | Notes |
| -------- | --------------- | ------------------------- |
| Dart | ^3.8.0 | |
| Flutter | >=3.29.0 | |
| Android | API 26+ | Android 8.0+ |
| iOS | 16.0+ | Xcode 15+ |
| macOS | 14.0+ | |
| Windows | 10+ | WebView2 Runtime required |
| Linux | | WebKitGTK required |
| Web | Any | Modern browser |

## Quick Example

Here's a simple example to get you started:
## Quick Start

```dart
import 'package:flutter/material.dart';
import 'package:zikzak_inappwebview/zikzak_inappwebview.dart';

void main() {
runApp(MyApp());
runApp(const MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('ZikZak InAppWebView')),
appBar: AppBar(title: Text('InAppWebView Example')),
body: InAppWebView(
initialUrlRequest: URLRequest(
url: WebUri('https://flutter.dev'),
),
initialSettings: InAppWebViewSettings(
safeBrowsingEnabled: true,
),
onWebViewCreated: (controller) {
print('WebView created!');
},
onLoadStop: (controller, url) {
print('Page finished loading: $url');
print('Page loaded: $url');
},
),
),
);
}
}
```

## Next Steps

- πŸ“– Read the [InAppWebView Guide](/docs/webview/in-app-webview)
- πŸ”— Learn about [JavaScript Communication](/docs/webview/javascript/communication)
- πŸͺ Explore the [Cookie Manager](/docs/utilities/cookie-manager)
- πŸ“š Browse the [API Reference](https://pub.dev/documentation/zikzak_inappwebview/latest/)

## Migrating from flutter_inappwebview

If you're migrating from the upstream `flutter_inappwebview` package, the API is nearly identical β€” just replace the import:

```dart
// Before
import 'package:flutter_inappwebview/flutter_inappwebview.dart';

// After
import 'package:zikzak_inappwebview/zikzak_inappwebview.dart';
```

Key differences:

- **Active maintenance**: Bugs are fixed, PRs are merged, releases happen regularly
- **Version**: Our fork tracks at version 4.x.x (upstream is at 6.x.x)
- **Modern defaults**: Better security defaults, deprecated APIs cleaned up
- **Windows**: Native Dart implementation (no C++ compilation needed)
Loading