Coder Social home page Coder Social logo

jhomlala / alice Goto Github PK

View Code? Open in Web Editor NEW
522.0 9.0 216.0 28.04 MB

HTTP Inspector for Flutter. Allows checking HTTP connections with UI inspector.

License: Apache License 2.0

Kotlin 1.14% Swift 2.22% Objective-C 0.20% Dart 93.14% Ruby 3.31%
dart flutter flutter-plugin flutter-examples flutter-package http inspector dart-library dartlang

alice's Introduction

Hi šŸ‘‹, I'm Jakub

  • šŸ”­ Iā€™m currently working on open source projects: BetterPlayer, Catcher, Alice
  • šŸ¢ I'm working @ Better Software Group
  • šŸ‘Øā€šŸ’» All of my projects are available at https://github.com/jhomlala
  • šŸ’¬ Ask me about Flutter, Android, Dart, Kotlin
  • āš” Fun fact I like to refactor old code.

Ā jhomlala

Connect with me:

jhomlala @jhomlala

jhomlala

alice's People

Contributors

alyyasser avatar applysci avatar arifcse10 avatar britannio avatar darran-kelinske-fivestars avatar droidluv avatar gadfly361 avatar itsjokr avatar jhomlala avatar jhomlalabsg avatar lscbot avatar mattisbrizard avatar mozaffari avatar nyan274 avatar shreyas18jan avatar tajchert avatar tamir198 avatar tvolkert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

alice's Issues

[FEATURE] Custom Alice Directionality

Is your feature request related to a problem? Please describe.
No

Describe the solution you'd like
There should be an option to set the Directionality of Alice. if the app direction is RTL then Alice looks ugly. RTL JSON is really ugly

Describe alternatives you've considered
null

Additional context
null

[BUG] can not install

always appear this error while run command : flutter run --
"This project uses AndroidX dependencies, but the 'android.useAndroidX' property is not enabled. Set this property to true in the gradle.properties file and retry. .... "

but if I remove : alice: ^0.1.11 in pubspec.yaml , it is fine !

PS : gradle.properties has these below lines already :
android.useAndroidX=true
android.enableJetifier=true

Can't use with chopper?

I am using http inspector for Alice plugin. and http request for chopper.
Is there any way to use chopper with alice?

chopper

  @Post(path: '/check-auth')
  Future<Response> checkAuth(
      @Field('client_id') clientId,
      @Field('client_secret') clientSecret,
      @Field('username') username
      );

button press event

final response = await Provider.of<Services>(context).checkAuth('4','N',value);

 alice.onHttpResponse(response);

I got error when using like this,

Error is:can't be assigned to the parameter type

But dio and http working with alice.

Query Parameters information when using Http from http/http package

when using Http from http/http package, Alice didn't show any Query params in Request information.
after checking the source, it's clear that Alice didn't do any check for query params when using http package.
for Http package, the query params data can be extracted from the url.

save action is not working on ios

The save action is failing on iOS with "only supported on Android" exception at:

MethodChannelPathProvider.getExternalStoragePath (package:path_provider_platform_interface/src/method_channel_path_provider.dart:55:7)
#1      getExternalStorageDirectory (package:path_provider/path_provider.dart:92:39)
#2      AliceSaveHelper._saveToFile (package:alice/helper/alice_save_helper.dart:57:37)
#3      AliceSaveHelper.checkPermissions (package:alice/helper/alice_save_helper.dart:30:7)

Need to use different location on iOS

    Directory externalDir = await (Platform.isAndroid //
      ? getExternalStorageDirectory() : getApplicationDocumentsDirectory());

But because location is private - also need to use something like share_extend plugin (it provides additional options comparing to the share plugin)

It can be used something like this (the sharePositionOrigin is needed for iOS common share UI):

    File tempFile = await writeFile(externalDir);

    RenderBox renderBox = _popupMenuKey.currentContext.findRenderObject();
    Offset position = renderBox.localToGlobal(Offset.zero);

    await ShareExtend.share(tempFile.path, "file",
        subject: "Alice Export",
        sharePanelTitle: 'Alice Export',
        sharePositionOrigin: Rect.fromLTWH( //
            position.dx, position.dy, renderBox.size.width, renderBox.size.height)
    );

As alternative, could introduce a function parameter in Alice instance, so user can provide their own implementation of saving/sharing files.

Cant start Alice HTTP Inspector. Please add NavigatorKey to your application

navigatorKey has already been added to the code, still it shows error(red line) under the navigatorKey.

@OverRide
Widget build(BuildContext context) {
return WillPopScope(
navigatorKey: _alice.getNavigatorKey(),
child: Theme(
data: ThemeData(
brightness: Brightness.light,
primarySwatch: AppColor.appColor,
primaryColor: AppColor.white,
buttonTheme: ButtonThemeData().copyWith(
buttonColor: AppColor.appColor,
textTheme: ButtonTextTheme.primary),
fontFamily: "EncodeSans",
),
child: layout()),

onWillPop: () {
  return handleBackPress();
});

}

permission_handler ask for too many permissions

My understanding is the library needs Notification and accelerometer sensor shaking. But the app store automatically rejects for the following ones:

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSContactsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSCalendarsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSAppleMusicUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSMotionUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSSpeechRecognitionUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Though you are not required to fix the following issues, we wanted to make you aware of them:

ITMS-90078: Missing Push Notification Entitlement - Your app appears to register with the Apple Push Notification service, but the app signature's entitlements do not include the "aps-environment" entitlement. If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the "aps-environment" entitlement. Xcode does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor's Capabilities pane, or manually add the entitlement to your entitlements file. For more information, see https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1.

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationAlwaysUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

Best regards,

The App Store Team

I know I can put in placeholder strings in the plist. It would be nice to just declare the necessary ones. permission_handler library supports configuration exclude unnecessary ones.

ServicesBinding.defaultBinaryMessenger was accessed before the binding was initialized

After Alice update i am getting those errors on application start-up. Thought app is running just fine, i can't access Alice (no push-notification, shake gesture doesn't bring up Alice UI).

Unhandled Exception: ServicesBinding.defaultBinaryMessenger was accessed before the binding was initialized.
If you're running an application and need to access the binary messenger before `runApp()` has been called (for example, during plugin initialization), then you need to explicitly call the `WidgetsFlutterBinding.ensureInitialized()` first.
If you're running a test, you can call the `TestWidgetsFlutterBinding.ensureInitialized()` as the first line in your test's `main()` method to initialize the binding.
#0      defaultBinaryMessenger.<anonymous closure> (package:flutter/src/services/binary_messenger.dart:76:7)
#1      defaultBinaryMessenger (package:flutter/src/services/binary_messenger.dart:89:4)
#2      MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:140:62)
#3      MethodChannel.setMethodCallHandler (package:flutter/src/services/platform_channel.dart:368:5)
#4      FlutterLocalNotificationsPlugin.initialize (package:flutter_local_notifications/src/flutter_local_notifications.dart:94:14)
#5      AliceCore._initializeNotificationsPlugin (package:alice/core/alice_core.dart:57:38)
#6      new AliceCore (package:alice/core/alice_core.dart:32:7)
#7      new Alice (package:alice/alice.dart:26:13)
#8      ApiCore.init (package:oversee_core_package/Api/Core/ApiCore.dart:29:16)
#9      new App (package:csq_prototype_app/main.dart:34:32)
#10     main (package:csq_prototype_app/main.dart:26:10)
#11     _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:239:25)
#12     _rootRun (dart:async/zone.dart:1126:13)
#13     _CustomZone.run (dart:async/zone.dart:1023:19)
#14     _runZoned (dart:async/zone.dart:1518:10)
#15     runZoned (dart:async/zone.dart:1502:12)
#16     _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:231:5)
#17     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307:19)
#18     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)
Unhandled Exception: ServicesBinding.defaultBinaryMessenger was accessed before the binding was initialized.
If you're running an application and need to access the binary messenger before `runApp()` has been called (for example, during plugin initialization), then you need to explicitly call the `WidgetsFlutterBinding.ensureInitialized()` first.
If you're running a test, you can call the `TestWidgetsFlutterBinding.ensureInitialized()` as the first line in your test's `main()` method to initialize the binding.
#0      defaultBinaryMessenger.<anonymous closure> (package:flutter/src/services/binary_messenger.dart:76:7)
#1      defaultBinaryMessenger (package:flutter/src/services/binary_messenger.dart:89:4)
#2      EventChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:484:62)
#3      EventChannel.receiveBroadcastStream.<anonymous closure> (package:flutter/src/services/platform_channel.dart:504:7)
#4      _runGuarded (dart:async/stream_controller.dart:807:24)
#5      _BroadcastStreamController._subscribe (dart:async/broadcast_stream_controller.dart:215:7)
#6      _ControllerStream._createSubscription (dart:async/stream_controller.dart:820:19)
#7      _StreamImpl.listen (dart:async/stream_impl.dart:474:9)
#8      new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:125:10)
#9      _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:93:16)
#10     _ForwardingStream.listen (dart:async/stream_pipe.dart:88:12)
#11     ShakeDetector.startListening (package:shake/shake.dart:48:46)
#12     new ShakeDetector.autoStart (package:shake/shake.dart:43:5)
#13     new AliceCore (package:alice/core/alice_core.dart:36:37)
#14     new Alice (package:alice/alice.dart:26:13)
#15     ApiCore.init (package:oversee_core_package/Api/Core/ApiCore.dart:29:16)
#16     new App (package:csq_prototype_app/main.dart:34:32)
#17     main (package:csq_prototype_app/main.dart:26:10)
#18     _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:239:25)
#19     _rootRun (dart:async/zone.dart:1126:13)
#20     _CustomZone.run (dart:async/zone.dart:1023:19)
#21     _runZoned (dart:async/zone.dart:1518:10)
#22     runZoned (dart:async/zone.dart:1502:12)
#23     _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:231:5)
#24     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307:19)
#25     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)

Flutter doctor output:

[āœ“] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.14.5 18F132, locale en-LV)
    ā€¢ Flutter version 1.12.13+hotfix.5 at /Users/danielsklinge/Flutter
    ā€¢ Framework revision 27321ebbad (4 weeks ago), 2019-12-10 18:15:01 -0800
    ā€¢ Engine revision 2994f7e1e6
    ā€¢ Dart version 2.7.0

[āœ“] Android toolchain - develop for Android devices (Android SDK version 29.0.1)
    ā€¢ Android SDK at /Users/danielsklinge/Library/Android/sdk
    ā€¢ Android NDK location not configured (optional; useful for native profiling support)
    ā€¢ Platform android-29, build-tools 29.0.1
    ā€¢ ANDROID_HOME = /Users/danielsklinge/Library/Android/sdk
    ā€¢ Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    ā€¢ Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    ā€¢ All Android licenses accepted.

[āœ“] Xcode - develop for iOS and macOS (Xcode 11.3)
    ā€¢ Xcode at /Applications/Xcode.app/Contents/Developer
    ā€¢ Xcode 11.3, Build version 11C29
    ā€¢ CocoaPods version 1.7.5

[āœ“] Android Studio (version 3.4)
    ā€¢ Android Studio at /Applications/Android Studio.app/Contents
    ā€¢ Flutter plugin version 39.0.1
    ā€¢ Dart plugin version 183.6270
    ā€¢ Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

[āœ“] VS Code (version 1.36.1)
    ā€¢ VS Code at /Applications/Visual Studio Code.app/Contents
    ā€¢ Flutter extension version 3.4.1

[āœ“] Connected device (1 available)
    ā€¢ iPhone ā€¢ 00008020-000A49E92212002E ā€¢ ios ā€¢ iOS 13.3

Any ideas?

cant use alice even after adding navigator key

I have added navigator key in this manner

final Alice alice = Alice(showNotification: true);
 @override
Widget build(BuildContext context) {
    dio.interceptors.add(alice.getDioInterceptor());    
    return MaterialApp(
         navigatorKey: alice.getNavigatorKey(),
         debugShowCheckedModeBanner: false,
     );
}

Cant start Alice HTTP Inspector. Please add NavigatorKey to your application
when i click on notification it shows error

Log from compute or Isolate

This library looks pretty good, but the current app I work on requires some offload into Isolates.
I'm having the usual

I cannot send Alice as parameter to the Isolate, because:
Unhandled Exception: Invalid argument(s): Illegal argument in isolate message : (object is a closure - Function '<anonymous closure>':.)

and off course cannot access Alice instance from there too, so I'm stuck.

Any suggestions?

Curl Share Option

This is a feature request, since this project is inspired from Chuck the one feature which I sorely miss is the capability to share a curl, since constructing a curl is fairly easy in Chuck the curl generation code should look like

    var compressed = false
    var curlCmd = "curl"
    curlCmd += " -X " + v(transaction?.method)
    val headers = transaction?.requestHeaders ?: emptyList()
    var i = 0
    val count = headers.size
    while (i < count) {
        val name = headers[i].name
        val value = headers[i].value
        if ("Accept-Encoding".equals(name, ignoreCase = true) && "gzip".equals(value, ignoreCase = true)) {
            compressed = true
        }
        curlCmd += " -H \'$name: $value\'"
        i++
    }
    val requestBody = v(transaction?.requestBody)
    if (requestBody.isNotEmpty()) {
        // try to keep to a single line and use a subshell to preserve any line breaks
        curlCmd += " --data $'" + requestBody.replace("\n", "\\n") + "'"
    }
    curlCmd += (if (compressed) " --compressed " else " ") + "\'${v(transaction?.url)}\'"

[FEATURE] Add limit and sorting options

Is your feature request related to a problem? Please describe.
I would like the ability to limit the number of calls stored to minimize memory usage and sort the list in descending order so the latest request is at the top.

Describe the solution you'd like
sort and limit parameters in the Alice constructor.

[FEATURE] Add sorting options

Is your feature request related to a problem? Please describe.
It would be useful to have the most recent requests at the top of the list instead of having to scroll all the way to the bottom. This seems to me like one of the fundamental features. This was already requested in this issue but I couldn't find a way to filter the requests, only to specify their limit. The documentation also doesn't say anything about it.

Describe the solution you'd like
Sort parameter in the Alice constructor.

How to differentiate Alice notification

Is your feature request related to a problem? Please describe.

I'm using flutter_local_notification already, and it seems to override Alice's internal flutter_local_notification.
I'm using the payload to decide where the navigator will push. The problem is I need to differentiate whether I clicked on Alice's notification or my own notification.

At the moment, I'm using a check on the payload: if it's an empty string (which Alice use), I will call showInspector.
However, I don't believe empty string is an ideal way to use it as differentiator.

Describe the solution you'd like

Use something specific for payload (e.g. "alice"), or maybe we can add custom payload for Alice to send in Alice's constructor

inspecting non-http requests

This is a feature request to add support for logging/inspecting non-http calls, e.g. plain logging, bluetooth or tcp network data, etc.

disable sound notification on ios device

Hi, it's a very nice library to inspect http request and response.
but I found the android having the sound notification turned off.. can we do the same for the ios part ? thanks

Unhandled Exception: MissingPluginException

After updating alice to the latest version 33, it stops showing notification and shows this error.

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: MissingPluginException(No implementation found for method initialize on channel dexterous.com/flutter/local_notifications)
E/flutter (23178): #0 MethodChannel._invokeMethod
package:flutter/ā€¦/services/platform_channel.dart:154
E/flutter (23178):
E/flutter (23178): #1 MethodChannel.invokeMethod
package:flutter/ā€¦/services/platform_channel.dart:329
E/flutter (23178): #2 AndroidFlutterLocalNotificationsPlugin.initialize (package:flutter_local_notifications/src/platform_flutter_local_notifications.dart:67:27)
E/flutter (23178): #3 FlutterLocalNotificationsPlugin.initialize (package:flutter_local_notifications/src/flutter_local_notifications_plugin.dart:97:13)
E/flutter (23178): #4 AliceCore._initializeNotificationsPlugin (package:alice/core/alice_core.dart:66:38)
E/flutter (23178): #5 new AliceCore (package:alice/core/alice_core.dart:39:7)
E/flutter (23178): #6 new Alice (package:alice/alice.dart:36:18)
E/flutter (23178): #7 AgroApiProvider.alice
package:agro_new/network/AgroApiProvider.dart:32
E/flutter (23178): #8 AgroApiProvider.alice
package:agro_new/network/AgroApiProvider.dart:32
E/flutter (23178): #9 new AgroApiProvider
package:agro_new/network/AgroApiProvider.dart:35
E/flutter (23178): #10 WinnApplication.onCreate
E/flutter (23178): #11 _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter (23178): #12 _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter (23178): #13 _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
E/flutter (23178): #14 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
E/flutter (23178): #15 Future._propagateToListeners (dart:async/future_impl.dart:711:32)
E/flutter (23178): #16 Future._completeWithValue (dart:async/future_impl.dart:526:5)
E/flutter (23178): #17 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:36:15)
E/flutter (23178): #18 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:298:13)
E/flutter (23178): #19 sharedgetInstance (package:agro_new/data/sharedPref.dart)
E/flutter (23178): #20 _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter (23178): #21 _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter (23178): #22 _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
E/flutter (23178): #23 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
E/flutter (23178): #24 Future._propagateToListeners (dart:async/future_impl.dart:711:32)
E/flutter (23178): #25 Future._completeWithValue (dart:async/future_impl.dart:526:5)
E/flutter (23178): #26 Future._asyncComplete. (dart:async/future_impl.dart:556:7)
E/flutter (23178): #27 _rootRun (dart:async/zone.dart:1184:13)
E/flutter (23178): #28 _CustomZone.run (dart:async/zone.dart:1077:19)
E/flutter (23178): #29 _CustomZone.runGuarded (dart:async/zone.dart:979:7)
E/flutter (23178): #30 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1019:23)
E/flutter (23178): #31 _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
E/flutter (23178): #32 _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)

Alice alice = Alice(showNotification: true); AgroApiProvider() { dio = new Dio(options); dio.interceptors.add(alice.getDioInterceptor()); } Alice getAliceInstance() { return alice; }

this is the constructor of http calls class

navigatorKey: application.apiProvider.getAliceInstance().getNavigatorKey(),

I added this in main root widget referencing the Http calls class.

Alice is inompatible with bloc >=0.9.3

Hello,

I'm using flutter_bloc 0.7.1 wich is based on bloc 0.9.3 and I want to use your package but there is a version conflict with the bloc package.

Because every version of alice depends on rxdart ^0.21.0 and bloc >=0.9.3 depends on rxdart >=0.18.1 <0.21.0, alice is incompatible with bloc >=0.9.3. And because flutter_bloc >=0.6.3 depends on bloc ^0.9.3, alice is incompatible with flutter_bloc >=0.6.3. So, because MyBlocApp depends on both flutter_bloc ^0.7.1 and alice ^0.0.2, version solving failed. pub get failed (1)

Thank you

Not supporting FormUrlEncoded request Params with Chopper

It's having an issue when using form URL encoded parameters, it do not launch the notification or inspector UI and throws the below exception:

E/flutter (31333): #1      Request.toBaseRequest (package:chopper/src/request.dart:116:12)
E/flutter (31333): #2      AliceChopperInterceptor.onRequest (package:alice/core/alice_chopper_response_interceptor.dart:47:39)
E/flutter (31333): #3      ChopperClient._interceptRequest (package:chopper/src/base.dart:178:23)
E/flutter (31333): #4      ChopperClient.send (package:chopper/src/base.dart:288:17)
E/flutter (31333): <asynchronous suspension>
E/flutter (31333): #5      _$LoginService.token (package:shop_app/api/services/LoginService.chopper.dart:36:19)
E/flutter (31333): #6      _BodyState.build.<anonymous closure> (package:shop_app/screens/splash/components/body.dart:80:56)
E/flutter (31333): #7      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:993:19)
E/flutter (31333): #8      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1111:38)
E/flutter (31333): #9      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24)
E/flutter (31333): #10     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:598:11)
E/flutter (31333): #11     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:287:5)
E/flutter (31333): #12     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:222:7)
E/flutter (31333): #13     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:476:9)
E/flutter (31333): #14     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:77:12)
E/flutter (31333): #15     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:122:9)
E/flutter (31333): #16     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
E/flutter (31333): #17     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:120:18)
E/flutter (31333): #18     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:106:7)
E/flutter (31333): #19     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:358:19)
E/flutter (31333): #20     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:338:22)
E/flutter (31333): #21     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:267:11)
E/flutter (31333): #22     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:295:7)
E/flutter (31333): #23     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:240:7)
E/flutter (31333): #24     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:213:7)
E/flutter (31333): #25     _rootRunUnary (dart:async/zone.dart:1206:13)
E/flutter (31333): #26     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (31333): #27     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (31333): #28     _invoke1 (dart:ui/hooks.dart:265:10)
E/flutter (31333): #29     _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)

Error when there are special characters in request body

image
Body content something like this: '[ { \"appInstanceId\": \"string\", \"level\": \"INFO\"'
function call

response = await client
              .put(address,
                  body: body, headers: headers)
              .then((response) {
            MyApp.alice.onHttpResponse(response, body: body);
            MyApp.alice.showInspector();
            return response;
          });

Dio 3.x incompatibility

Thank you, Jakub Homlala, for developing the wonderful Alice app.
It helps other people a lot.

After upgrading Dio to version 3.x, it became impossible to use Alice:
"Because alice >=0.0.14 depends on dio ^2.2.1 and myapp depends on dio ^3.0.3, alice >=0.0.14 is forbidden. So, because myapp depends on alice ^0.0.14, version solving failed."

We are looking forward to updating Alice to support Dio 3.x

Bless you!

[BUG] alice incompatible with new version of flutter_local_notifications

Describe the bug
Alice version ^0.1.5 is not compatible with flutter_local_notifications package, version ^3.0.1+6

To Reproduce
Steps to reproduce the behavior:

  1. Import Alice in a project that needs flutter_local_notifications ^3.0.1+6
  2. save pubspec.yaml or run pub get
  3. see console output: Because alice 0.1.5 depends on flutter_local_notifications ^1.4.4+4 and no versions of alice match >0.1.5 <0.2.0, alice ^0.1.5 requires flutter_local_notifications ^1.4.4+4.

Expected behavior
Upgrade required functions inside alice that uses code from flutter_local_notifications newest updates (from what I saw, the major changes are that timezone is added and the schedule() function is changed to zonedSchedule(), that requires additional parameters in order to properly function)

Flutter doctor
[āœ“] Flutter (Channel stable, 1.22.4, on Mac OS X 10.15.7 19H15 darwin-x64, locale en-RO)
ā€¢ Flutter version 1.22.4 at /Users/*/Applications/flutter
ā€¢ Framework revision 1aafb3a8b9 (3 weeks ago), 2020-11-13 09:59:28 -0800
ā€¢ Engine revision 2c956a31c0
ā€¢ Dart version 2.10.4

[āœ“] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
ā€¢ Android SDK at /Users/*/Library/Android/sdk
ā€¢ Platform android-30, build-tools 29.0.3
ā€¢ Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
ā€¢ Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
ā€¢ All Android licenses accepted.

[āœ“] Xcode - develop for iOS and macOS (Xcode 12.2)
ā€¢ Xcode at /Applications/Xcode.app/Contents/Developer
ā€¢ Xcode 12.2, Build version 12B45b
ā€¢ CocoaPods version 1.10.0

[āœ“] Android Studio (version 3.6)
ā€¢ Android Studio at /Applications/Android Studio.app/Contents
ā€¢ Flutter plugin version 49.0.1
ā€¢ Dart plugin version 192.8052
ā€¢ Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

[āœ“] VS Code (version 1.51.1)
ā€¢ VS Code at /Applications/Visual Studio Code.app/Contents
ā€¢ Flutter extension version 3.16.0

[āœ“] Connected device (1 available)
ā€¢ iPhone 12 Pro Max (mobile) ā€¢ 07C5C7D7-5CAB-4AD3-B323-83E381AD312E ā€¢ ios ā€¢ com.apple.CoreSimulator.SimRuntime.iOS-14-2 (simulator)

ā€¢ No issues found!

Alice version

  • Version: ^0.1.5

Smartphone (please complete the following information):

  • Device: all

Compilation error

What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
   > Duplicate class com.google.android.exoplayer2.ui.package-info found in modules jetified-exoplayer-common-2.14.1-runtime (com.google.android.exoplayer:exoplayer-common:2.14.1) and jetified-exoplayer-ui-2.13.3-runtime (com.google.android.exoplayer:exoplayer-ui:2.13.3)

     Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.

* Try:
Run with --stack trace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

I added alice: ^0.2.2

And it gives an error

Flutter version: 2.2.2

My app dependencies:


  flutter_bloc: ^7.0.0
  hydrated_bloc: ^7.0.0
  uuid: ^3.0.4
  mask_text_input_formatter: ^2.0.0-nullsafety.2
  url_launcher: ^6.0.3
  easy_localization: ^3.0.0
  path_provider: ^2.0.2
  get_it: ^7.1.3
  geolocator: ^7.0.1
  rxdart: ^0.27.1
  
  path: ^1.8.0
  google_maps_flutter: ^2.0.3
  firebase_messaging: ^10.0.1
  http_interceptor: ^0.4.1
  http: ^0.13.3

  logger: ^1.0.0-nullsafety.0
  equatable: ^2.0.0
  cupertino_icons: ^1.0.2
  freezed_annotation:
  lottie: ^1.0.1
  cached_network_image: ^3.0.0-nullsafety
  video_thumbnail: ^0.3.3
  camera: ^0.8.1+3
  # camera: 
  #   git:
  #     url: https://github.com/bottlepay/plugins.git
  #     path: packages/camera/camera
  #     ref: android-rework

  flutter_svg: ^0.22.0
  flutter_svg_provider: ^0.1.9
  device_info: ^2.0.0
  package_info: ^2.0.2
  pin_code_fields: ^7.0.0
  smooth_page_indicator: ^0.3.0-nullsafety.0
  dotted_border: ^2.0.0-nullsafety.0
  flutter_google_places: ^0.3.0
  geocoding: ^2.0.0
  photo_manager: ^1.1.0
  image_picker: ^0.7.4

  story_view: ^0.13.1
  
  video_player: ^2.1.6

  carousel_slider: ^4.0.0-nullsafety.0
  flutter_staggered_animations: ^1.0.0
  shimmer: ^2.0.0
  custom_sliding_segmented_control: ^1.0.0
  flutter_rating_bar: ^4.0.0
  table_calendar: ^3.0.0
  grouped_list: ^4.0.0
  
dependency_overrides:
    rxdart: ^0.27.1

Swift version not specified

I'm getting this error when building for ios

  • alice does not specify a Swift version and none of the targets (Runner) integrating it have the SWIFT_VERSION attribute set. Please contact the author or set the SWIFT_VERSION attribute in at least one of the targets that integrate this pod.

To make it easier to reproduce this I've created an empty app with the alice added here

I've also got the full build log here

Help - Implementing with Provider

Hi there,
I'm trying to implement Alice using Provider without success.
The only way I managed to implement Alice is by not declaring it as final field under StatelessWidget class (which gives me a warning, but still works).
My code:

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  Alice _alice;
  final _database = constructDb();

  @override
  Widget build(BuildContext context) {
    SystemChrome.setEnabledSystemUIOverlays([]);

    _alice ??= Alice(
        showNotification: false, showInspectorOnShake: true, darkTheme: true);

    return MultiProvider(
      providers: [
        Provider<MyDatabase>(
          create: (context) => _database,
          dispose: (context, value) => value.close(),
        ),
        Provider<ApiProvider>(
            create: (context) => ApiProvider(_database, _alice))
      ],
      child: MaterialApp(
        navigatorKey: _alice.getNavigatorKey(),
        title: 'MyApp',
        theme: ThemeData(
          fontFamily: "Rubik",
          brightness: Brightness.dark,
          primaryColor: Config.primaryColor,
          primaryColorDark: Config.darkColor,
          accentColor: Config.blueColor,
          scaffoldBackgroundColor: Config.darkColor,
          canvasColor: Config.primaryColor,
        ),
        home: HomeScreen(),
      ),
    );
  }
}

Note: ApiProvider is a class for implementing Dio latest version.

I would appreciate the help!

P.S.
I think it would be nicer if the calls list will be ordered as DESC and not ASC, and also wrap all the screens with SafeArea (it's not readable when using a device with a notch).

Text theme error

Compiler message:
../../Android/flutter/.pub-cache/hosted/pub.dartlang.org/alice-0.0.33/lib/ui/widget/alice_call_list_item_widget.dart:174:42: Error: The getter 'bodyText1' isn't defined for the class 'TextTheme'.
 - 'TextTheme' is from 'package:flutter/src/material/text_theme.dart' ('../../Android/flutter/packages/flutter/lib/src/material/text_theme.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bodyText1'.
      return Theme.of(context).textTheme.bodyText1.color;
                                         ^^^^^^^^^
../../Android/flutter/.pub-cache/hosted/pub.dartlang.org/alice-0.0.33/lib/ui/widget/alice_call_list_item_widget.dart:182:42: Error: The getter 'bodyText1' isn't defined for the class 'TextTheme'.
 - 'TextTheme' is from 'package:flutter/src/material/text_theme.dart' ('../../Android/flutter/packages/flutter/lib/src/material/text_theme.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bodyText1'.
      return Theme.of(context).textTheme.bodyText1.color;

Even same error in V0.1.0

Alice is crashing when app is opened from Universal/App link

Alice is currently crashing (internal crash, app keeps working without Alice notification being visible) when using app links/ universal links.

Steps to reproduce

  1. On Android
  2. Open the app
  3. Open the browser and load an app link
  4. Observe app opening the link (and navigating to app link page)
  5. Alice notification disappears and the following stacktrace is returned
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.ComponentName android.content.Intent.getComponent()' on a null object reference
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin.getMainActivityClass(FlutterLocalNotificationsPlugin.java:477)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin.createNotification(FlutterLocalNotificationsPlugin.java:131)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin.showNotification(FlutterLocalNotificationsPlugin.java:688)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin.show(FlutterLocalNotificationsPlugin.java:827)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin.onMethodCall(FlutterLocalNotificationsPlugin.java:750)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:226)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:631)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at android.os.MessageQueue.next(MessageQueue.java:336)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at android.os.Looper.loop(Looper.java:174)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at android.app.ActivityThread.main(ActivityThread.java:7356)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
E/MethodChannel#dexterous.com/flutter/local_notifications( 9281): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
E/flutter ( 9281): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(error, Attempt to invoke virtual method 'android.content.ComponentName android.content.Intent.getComponent()' on a null object reference, null)
E/flutter ( 9281): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter ( 9281): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:18)
E/flutter ( 9281): <asynchronous suspension>
E/flutter ( 9281): #2      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:329:12)
E/flutter ( 9281): #3      AndroidFlutterLocalNotificationsPlugin.show (package:flutter_local_notifications/src/platform_flutter_local_notifications.dart:137:21)
E/flutter ( 9281): #4      FlutterLocalNotificationsPlugin.show (package:flutter_local_notifications/src/flutter_local_notifications_plugin.dart:136:13)
E/flutter ( 9281): #5      AliceCore._showLocalNotification (package:alice/core/alice_core.dart:175:44)
E/flutter ( 9281): #6      AliceCore._onCallsChanged (package:alice/core/alice_core.dart:75:15)
E/flutter ( 9281): #7      new AliceCore.<anonymous closure> (package:alice/core/alice_core.dart:40:55)
E/flutter ( 9281): #8      _rootRunUnary (dart:async/zone.dart:1192:38)
E/flutter ( 9281): #9      _CustomZone.runUnary (dart:async/zone.dart:1085:19)
E/flutter ( 9281): #10     _CustomZone.runUnaryGuarded (dart:async/zone.dart:987:7)
E/flutter ( 9281): #11     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:339:11)
E/flutter ( 9281): #12     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:266:7)
E/flutter ( 9281): #13     _SyncBroadcastStreamController._sendData (dart:async/broadcast_stream_controller.dart:378:20)
E/flutter ( 9281): #14     _BroadcastStreamController.add (dart:async/broadcast_stream_controller.dart:252:5)
E/flutter ( 9281): #15     _StartWithStreamSink._safeAddFirstEvent (package:rxdart/src/transformers/start_with.dart:56:12)
E/flutter ( 9281): #16     _StartWithStreamSink.onListen.<anonymous closure> (package:rxdart/src/transformers/start_with.dart:38:35)
E/flutter ( 9281): #17     _rootRun (dart:async/zone.dart:1180:38)
E/flutter ( 9281): #18     _CustomZone.run (dart:async/zone.dart:1077:19)
E/flutter ( 9281): #19     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
E/flutter ( 9281): #20     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23)
E/flutter ( 9281): #21     _rootRun (dart:async/zone.dart:1184:13)
E/flutter ( 9281): #22     _CustomZone.run (dart:async/zone.dart:1077:19)
E/flutter ( 9281): #23     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
E/flutter ( 9281): #24     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23)
E/flutter ( 9281): #25     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
E/flutter ( 9281): #26     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
E/flutter ( 9281): 

Chopper interceptor has error, Bad state: No element error

some request has this error in chopper, did some has the same error:

Caught error: Bad state: No element
#0 ListMixin.firstWhere (dart:collection/list.dart:150:5)
#1 AliceCore._selectCall (package:alice/core/alice_core.dart:261:8)
#2 AliceCore.addResponse (package:alice/core/alice_core.dart:230:34)
#3 AliceChopperInterceptor.onResponse (package:flutter_capp/net/interceptor/alice_chopper_response_interceptor.dart:124:15)
#4 ChopperClient._interceptResponse (package:chopper/src/base.dart:200:23)

#5 ChopperClient.send (package:chopper/src/base.dart:308:17)

how to disable automatic page switching ??

i use alice, but i have a little problem. that is, when i move pages .. alice appears, what i want is not to appear when moving pages. just display in the notification and I'll click the notification.

// set default configs

  Dio _dio() {
    final options = BaseOptions(
      baseUrl: _baseUrl,
      connectTimeout: 60000,
      receiveTimeout: 50000,
      contentType: 'application/json',
    );

    var dio = Dio(options);

    dio.interceptors.add(LogginInterceptors());
    Alice alice = Alice(
      showNotification: true,
      // darkTheme: false,
      navigatorKey: navigatorKey,
      // showInspectorOnShake: false,
    );
    dio.interceptors.add(
      alice.getDioInterceptor(),
    );
    alice.showInspector();

    return dio;
  }

How do I deactivate Alice when I move the navigate page, I only want Alice to appear in the notification and I can click the notification to bring up the information

Cant add navigator key for alice inspector

at define navigatorkey in return WillPopScope navigatorkey shows error

@OverRide
Widget build(BuildContext context) {
return WillPopScope(
navigatorKey: _alice.getNavigatorKey(),
child: Theme(
data: ThemeData(
brightness: Brightness.light,
primarySwatch: AppColor.appColor,
primaryColor: AppColor.white,
buttonTheme: ButtonThemeData().copyWith(
buttonColor: AppColor.appColor,
textTheme: ButtonTextTheme.primary),
fontFamily: "EncodeSans",
),
child: layout()),

    onWillPop: () {
      return handleBackPress();
    });

}

Null safe

Hi, thanks for the great package!

Are there any plans for migrating the package to use null safe?

Share icon on HTTP Call Details page has no effect

On my iPad (iOS 13.3.1), the floating share button on the HTTP call page has no effect when tapped (Alice version 0.0.30). Another person on my team has seen the same on Android as well at times, although I haven't been able to reproduce.

Android minsdk 19

May i know the reason why you put the android minsdk to 19 sir? thank you...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.