Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
ebd7efb
build(android)!: migrate example to Flutter 3.47 toolchain
Lzyct Sep 20, 2026
d24e44b
build(ios)!: adopt Flutter 3.47 lifecycle
Lzyct Sep 20, 2026
154c4ad
feat!: support Flutter 3.47 with controlled tabs
Lzyct Sep 20, 2026
2a786bb
test: cover widget behavior and usage samples
Lzyct Sep 20, 2026
3f96531
docs: document Flutter 3.47 and v2 migration
Lzyct Sep 20, 2026
5377df0
feat: animate selected tab indicator
Lzyct Sep 20, 2026
51a5c7d
feat: support adaptive tab widths
Lzyct Sep 20, 2026
eb02712
docs: explain indicator alignment calculation
Lzyct Sep 20, 2026
105e404
refactor: split adaptive and fixed tab layouts
Lzyct Sep 20, 2026
51f6a98
docs: describe adaptive indicator positioning
Lzyct Sep 20, 2026
e670bb9
refactor: scope updates with value listenables
Lzyct Sep 20, 2026
bcb7178
docs: recommend value listenable selection
Lzyct Sep 20, 2026
95fc199
docs: add project agent guidance
Lzyct Sep 20, 2026
2a08b9e
test: verify selection rebuild stays scoped
Lzyct Sep 20, 2026
82c47ad
test(e2e): add README demo flows
Lzyct Sep 20, 2026
7626f9d
docs: refresh usage demos
Lzyct Sep 20, 2026
a5bb9eb
test(e2e): capture every README usage
Lzyct Sep 20, 2026
751f42a
docs: pair every usage with a demo
Lzyct Sep 20, 2026
b4b2150
feat: align adaptive tab surface
Lzyct Sep 20, 2026
a598c6c
docs: refresh adaptive alignment demo
Lzyct Sep 20, 2026
fec3930
docs: document adaptive tab alignment
Lzyct Sep 20, 2026
2307f5d
feat: add animation duration to tab toggle and update README examples
Lzyct Sep 20, 2026
aee349f
chore: update Ko-fi username and custom sponsorship URLs in FUNDING.yml
Lzyct Sep 20, 2026
b5f3d11
docs: add donation links to README for support options
Lzyct Sep 20, 2026
47829fe
feat: add CI workflows for pull request checks and merges
Lzyct Sep 20, 2026
a1880bf
docs: sort changelog versions descending
Lzyct Sep 20, 2026
47bdc02
chore: simplify flutter initialization command in CI workflow
Lzyct Sep 20, 2026
4a496ab
chore: simplify flutter test command in CI workflow
Lzyct Sep 20, 2026
45d1358
fix: use explicit DataTab constructor
Lzyct Sep 20, 2026
60988ab
docs: note Dart 3.13 DataTab fix
Lzyct Sep 20, 2026
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
4 changes: 2 additions & 2 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: ukieTux # Replace with a single Ko-fi username
ko_fi: lzyct # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ['https://www.buymeacoffee.com/ukieTux','https://paypal.me/ukieTux']# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
custom: ['https://www.buymeacoffee.com/lzyct','https://paypal.me/ukieTux']# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
85 changes: 85 additions & 0 deletions .github/merge-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Merge CI

# This workflow is triggered on pull request to the repository.

# Run this script when PR and status is closed
on:
pull_request:
types: [ closed ]

jobs:
build:
# This job will run on ubuntu virtual machine
runs-on: ubuntu-latest
steps:

# Setup Java environment in order to build the Android app.
- uses: actions/[email protected]
- uses: actions/[email protected]
with:
distribution: 'zulu' # See 'Supported distributions' for available options
java-version: '17'

# Setup the flutter environment.
- uses: subosito/flutter-action@v2
with:
channel: 'stable' # 'dev', 'alpha', default to: 'stable'
# flutter-version: '1.12.x' # you can also specify exact version of flutter

# Get flutter dependencies.
- name: Run initialize flutter project
run: flutter pub get ;flutter gen-l10n;flutter pub run build_runner build --delete-conflicting-outputs

# Formatting code
- name: Running flutter format
run: dart format lib/
# Get current branch
- name: Get branch name
id: branch-name
uses: tj-actions/branch-names@v5

# Check modified files
- name: Check for modified files
id: git-check
run: echo "modified=$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)" >> $GITHUB_OUTPUT
# Push code changes
- name: Push changes
if: steps.git-check.outputs.modified == 'true'
run: |
git config --global user.name 'Lzyct-Bot'
git config --global user.email '[email protected]'
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
git fetch
git checkout ${{ steps.branch-name.outputs.current_branch }}
git commit -am "clean: apply formatting changes"
git push
# Run widget tests for our flutter project.
- name: Run flutter test --machine --coverage
run: flutter test --machine --coverage

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }} # Add this secret in your repository settings
file: coverage/lcov.info

# Build apk.
# - name: Build apk file
# run: flutter build apk --flavor stg -t lib/main_stg.dart
#
# # Upload generated apk to the artifacts.
# - name: Uploading apk file
# uses: actions/upload-artifact@v1
# with:
# name: staging-apk
# path: build/app/outputs/flutter-apk/app-stg-release.apk

- name: Delete branch if merged
uses: actions/github-script@v5
with:
script: |
github.rest.git.deleteRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `heads/${context.payload.pull_request.head.ref}`,
})
51 changes: 51 additions & 0 deletions .github/pull_request-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Pull Request Checker

# This workflow is triggered on pull request to the repository.

# Run this script when PR and status is open
on: pull_request

jobs:
build:
# This job will run on ubuntu virtual machine
runs-on: ubuntu-latest
steps:

# Setup Java environment in order to build the Android app.
- uses: actions/[email protected]
- uses: actions/[email protected]
with:
distribution: 'zulu' # See 'Supported distributions' for available options
java-version: '17'

# Setup the flutter environment.
- uses: subosito/flutter-action@v2
with:
channel: 'stable' # 'dev', 'alpha', default to: 'stable'
#flutter-version: '3.24.3' # you can also specify exact version of flutter

# Check Flutter version
- name: Check Flutter version
run: flutter doctor -v

# Get flutter dependencies.
- name: Run initialize flutter project
run: flutter pub get ;flutter gen-l10n;flutter pub run build_runner build --delete-conflicting-outputs

# Statically analyze the Dart code for any errors.
- name: Run flutter analyze
run: flutter analyze --no-fatal-infos --no-fatal-warnings

# Run widget tests for our flutter project.
- name: Install LCOV
run: sudo apt-get update && sudo apt-get install -y lcov

- name: Run flutter test --machine --coverage
run: flutter test --coverage;lcov --remove coverage/lcov.info 'lib/core/localization/generated/' 'lib/core/resources/*' 'lib/utils/services/firebase/*' '**/*.g.dart' -o coverage/new_lcov.info ;genhtml coverage/new_lcov.info -o coverage/html


- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }} # Add this secret in your repository settings
file: coverage/new_lcov.info
12 changes: 12 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## What it does

-

## How to test

1.
2.
3.

## Screenshot

85 changes: 85 additions & 0 deletions .github/workflows/merge-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Merge CI

# This workflow is triggered on pull request to the repository.

# Run this script when PR and status is closed
on:
pull_request:
types: [ closed ]

jobs:
build:
# This job will run on ubuntu virtual machine
runs-on: ubuntu-latest
steps:

# Setup Java environment in order to build the Android app.
- uses: actions/[email protected]
- uses: actions/[email protected]
with:
distribution: 'zulu' # See 'Supported distributions' for available options
java-version: '17'

# Setup the flutter environment.
- uses: subosito/flutter-action@v2
with:
channel: 'stable' # 'dev', 'alpha', default to: 'stable'
# flutter-version: '1.12.x' # you can also specify exact version of flutter

# Get flutter dependencies.
- name: Run initialize flutter project
run: flutter pub get ;flutter gen-l10n;flutter pub run build_runner build --delete-conflicting-outputs

# Formatting code
- name: Running flutter format
run: dart format lib/
# Get current branch
- name: Get branch name
id: branch-name
uses: tj-actions/branch-names@v5

# Check modified files
- name: Check for modified files
id: git-check
run: echo "modified=$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)" >> $GITHUB_OUTPUT
# Push code changes
- name: Push changes
if: steps.git-check.outputs.modified == 'true'
run: |
git config --global user.name 'Lzyct-Bot'
git config --global user.email '[email protected]'
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
git fetch
git checkout ${{ steps.branch-name.outputs.current_branch }}
git commit -am "clean: apply formatting changes"
git push
# Run widget tests for our flutter project.
- name: Run flutter test --machine --coverage
run: flutter test --machine --coverage

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }} # Add this secret in your repository settings
file: coverage/lcov.info

# Build apk.
# - name: Build apk file
# run: flutter build apk --flavor stg -t lib/main_stg.dart
#
# # Upload generated apk to the artifacts.
# - name: Uploading apk file
# uses: actions/upload-artifact@v1
# with:
# name: staging-apk
# path: build/app/outputs/flutter-apk/app-stg-release.apk

- name: Delete branch if merged
uses: actions/github-script@v5
with:
script: |
github.rest.git.deleteRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `heads/${context.payload.pull_request.head.ref}`,
})
40 changes: 40 additions & 0 deletions .github/workflows/pull_request-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Pull Request Checker

# This workflow is triggered on pull request to the repository.

# Run this script when PR and status is open
on: pull_request

jobs:
build:
# This job will run on ubuntu virtual machine
runs-on: ubuntu-latest
steps:

# Setup Java environment in order to build the Android app.
- uses: actions/[email protected]
- uses: actions/[email protected]
with:
distribution: 'zulu' # See 'Supported distributions' for available options
java-version: '17'

# Setup the flutter environment.
- uses: subosito/flutter-action@v2
with:
channel: 'stable' # 'dev', 'alpha', default to: 'stable'
#flutter-version: '3.24.3' # you can also specify exact version of flutter

# Check Flutter version
- name: Check Flutter version
run: flutter doctor -v

# Get flutter dependencies.
- name: Run initialize flutter project
run: flutter pub get

# Statically analyze the Dart code for any errors.
- name: Run flutter analyze
run: flutter analyze --no-fatal-infos --no-fatal-warnings

- name: Run flutter test
run: flutter test
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@
.idea/

build/
doc/api/
12 changes: 12 additions & 0 deletions .maestro/readme_adaptive.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
appId: com.example.example
---
- launchApp:
clearState: true
- assertVisible: "Adaptive Tab Width"
- waitForAnimationToEnd
- tapOn: "AAAAAAAAAAAAAAA"
- waitForAnimationToEnd
- assertVisible: "Index selected : 1"
- tapOn: "AAAA"
- waitForAnimationToEnd
- assertVisible: "Index selected : 0"
9 changes: 9 additions & 0 deletions .maestro/readme_basic.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
appId: com.example.example
---
- launchApp:
clearState: true
- assertVisible: "Basic Tab Toggle"
- waitForAnimationToEnd
- tapOn: "Tab C (19)"
- waitForAnimationToEnd
- assertVisible: "Index selected : 2"
14 changes: 14 additions & 0 deletions .maestro/readme_counter.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
appId: com.example.example
---
- launchApp:
clearState: true
- scrollUntilVisible:
element:
text: "Basic Tab Toggle with Counter Widget"
direction: DOWN
centerElement: true
- waitForAnimationToEnd
- tapOn:
point: "25%,23%"
- waitForAnimationToEnd
- assertVisible: "Index selected : 0"
14 changes: 14 additions & 0 deletions .maestro/readme_icon_only.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
appId: com.example.example
---
- launchApp:
clearState: true
- scrollUntilVisible:
element:
text: "With Icon Only and Implement margin for selected item"
direction: DOWN
centerElement: true
- waitForAnimationToEnd
- tapOn:
point: "84%,53%"
- waitForAnimationToEnd
- assertVisible: "Selected sex index: 1"
13 changes: 13 additions & 0 deletions .maestro/readme_programmatic.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
appId: com.example.example
---
- launchApp:
clearState: true
- scrollUntilVisible:
element:
text: "Update selected programmatically "
direction: DOWN
centerElement: true
- waitForAnimationToEnd
- tapOn: "Select C"
- waitForAnimationToEnd
- assertVisible: "Selected sex index: 2 "
13 changes: 13 additions & 0 deletions .maestro/readme_text_icon.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
appId: com.example.example
---
- launchApp:
clearState: true
- scrollUntilVisible:
element:
text: "Text With Icon"
direction: DOWN
centerElement: true
- waitForAnimationToEnd
- tapOn: "Female"
- waitForAnimationToEnd
- assertVisible: ".*Selected sex : Female.*"
22 changes: 22 additions & 0 deletions .pubignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
.dart_tool/
.git/
.idea/
*.iml
build/
doc/api/

example/.dart_tool/
example/.idea/
example/build/
example/android/.gradle/
example/android/local.properties
example/android/gradle/wrapper/gradle-wrapper.jar
example/android/gradlew
example/android/gradlew.bat
example/ios/Flutter/Generated.xcconfig
example/ios/Flutter/ephemeral/
example/ios/Flutter/flutter_export_environment.sh
example/ios/Pods/
example/ios/.symlinks/
example/ios/Runner/GeneratedPluginRegistrant.*
example/ios/xcuserdata/
Loading
Loading