Skip to content

DevsOnFlutter/flutter_process_text

Repository files navigation

Flutter Process Text Plugin

GitHub GitHub code size in bytes GitHub language count GitHub last commit

Compatibility

✅   Android
❌   iOS (active issue: iOS support)

Show some ❤️ and ⭐ the repo

GitHub followers

Why use Flutter Process Text?

Flutter Process Text Plugin is known for :

Flutter Process Text Flutter Process Text
Fast, performant & compatible Free & Open-source
Production ready Make App Reactive

Features

✅   Listen process text stream
✅   Open app from process text intent activity
✅   Get pending intent text


Demo

App Running App Not Running
App Running AppNotRunning

Quick start

Step 1: Include plugin to your project

dependencies: flutter_process_text: <latest version>

Run pub get and get packages.

Step 2: Create a new activity

Add the below code to your AndroidManifest.xml in the android\app\src\main\ folder.

 <activity android:name=".ProcessTextActivity" android:label="Process_Text" android:theme="@android:style/Theme.NoDisplay"> <intent-filter> <action android:name="android.intent.action.PROCESS_TEXT" /> <data android:mimeType="text/plain"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>

Note: You may change the android:name from ProcessTextActivity to anything you want. also change the android:label from Process_Text to the process action text that you want to display.

Step 3: Create new activity class

Create a new Java/Kotlin file with the same name as android:name in step 2.

Copy the below code and paste in the newly created file.

package com.divyanshushekhar.flutter_process_text_example; import com.divyanshushekhar.flutter_process_text.FlutterProcessTextPlugin; import io.flutter.embedding.android.FlutterActivity; import android.os.Bundle; public class ProcessTextActivity extends FlutterActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); boolean issAppRunning = MainActivity.getIsAppRunning(); FlutterProcessTextPlugin.listenProcessTextIntent(issAppRunning); } }

Note: Don't forget to change the package name in the above code.

Step 4: Changes in MainActivity

Make the necessary changes in the MainActivity class.

package com.divyanshushekhar.flutter_process_text_example; import io.flutter.embedding.android.FlutterActivity; import android.app.ActivityManager; import android.content.Context; import android.os.Bundle; import java.util.List; public class MainActivity extends FlutterActivity { private static boolean isAppRunning; public static boolean getIsAppRunning() { return isAppRunning; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); isAppRunning = isAppRunning(this); } public static boolean isAppRunning(Context context) { final String packageName = context.getPackageName(); final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); final List<ActivityManager.RunningAppProcessInfo> processInfo = activityManager.getRunningAppProcesses(); if (processInfo != null) { for (final ActivityManager.RunningAppProcessInfo info : processInfo) { if (info.processName.equals(packageName)) { return true; } } } return false; } }

Step 5: Connect to flutter

First thing you need to do is to call the initialize method from the FlutterProcessText class in the initState() {} of the page.

FlutterProcessText.initialize();

OR

FlutterProcessText.initialize( showConfirmationToast: true, showRefreshToast: true, showErrorToast: true, confirmationMessage: "Text Added", refreshMessage: "Got all Text", errorMessage: "Some Error", );

Step 6: Working with stream

There are two ways to work with stream, either create a StreamSubscription to listen for the incoming data or store the Stream and use it in StreamBuilder.

 late final StreamSubscription _processText; String text? = ''; @override void initState() { super.initState(); FlutterProcessText.initialize( showToast: true, confirmationMessage: "Text Added", refreshMessage: "Got all Text", errorMessage: "Some Error", ); _processText = FlutterProcessText.getProcessTextStream.listen((event) { setState(() { text = event; }); }); } @override void dispose() { super.dispose(); _processText.cancel(); }

OR

late final Stream<String> _processText; _processText = FlutterProcessText.getProcessTextStream;

Now use the stream in the StreamBuilder.

StreamBuilder<String?>( stream: _processText, builder: (context, snapshot) { return Text('Fetched Data: ${snapshot.data}'); }, ),

Get pending data

Get the pending data by calling the refreshProcessText method in FlutterProcessText class.

String? text = await FlutterProcessText.refreshProcessText;

Project Created & Maintained By

Divyanshu Shekhar

Copyright & License

Code and documentation Copyright (c) 2021 Divyanshu Shekhar. Code released under the BSD 3-Clause License.