Flutter SDK referansı
Günlük hayatta kullandığınız genel sınıflar, her birinin ne işe yaradığı ve hakkında insanları şaşırtan tek şey.
Günlük hayatta kullandığınız genel API. Kendinizi src/ dizininden içe aktarma yaparken bulursanız neye ihtiyaç duyduğunuzu bize bildirin, onu uygun şekilde dışa aktaralım.
Oluşturulan tam dartdoc, yayımlanan ilk sürümle birlikte pub.dev'de yerini alacaktır. Bu sayfa ise yol haritasıdır.
Bu çağrıları nadiren kendiniz yazarsınız: her görev, bunları yapay zekâ kodlama aracınıza yazdıran istemle başlar. Bu sayfa, onların dayandığı temeldir.
Rendel
Ön yüz (facade). Uygulama çalıştırması başına bir init.
| Üye | İmza | Notlar |
|---|---|---|
init | Future<void> init({required String appKey, RendelTheme? theme, List<RendelAction> actions, RendelConfig config}) | Await edilir. rd_pk_ ile başlamayan bir anahtar debug modunda assert eder ve release modunda onLog aracılığıyla bildirir, ardından o çalıştırma için Rendel'i devre dışı bırakır — eskiden bir yazım hatası sessiz sedasız bir öğleden sonraya mal olurdu. |
open | Future<void> open(BuildContext context) | Rendel'i tam boy bir sheet olarak sunar. Zaten açıkken veya açtığı bir ekrandan sonra balona küçülmüş durumdayken, ikincisini üst üste yığmak yerine o sheet'e döner veya onu geri yükler (0.38). Rendel devre dışıyken sunmadan döner. |
close | void close(BuildContext context) | — |
reset | void reset() | Çıkış yapıldığında çağırın. Sohbeti ve kullanıcıyı temizler, böylece bir sonraki tur anonim olur. Sheet açıkken çağrılması güvenlidir. |
registerAction | void registerAction(RendelAction action) | Manifesti yeniden senkronize eder. |
registerRoute | void registerRoute(String name, {required String title, required String description, Map<String, RendelRouteParam> params, required RendelRouteOpener open}) | Rendel'in bir screens kartında sunabileceği, uygulamanıza ait bir ekran. name, snake_case formatındadır. title (1-60 karakter), modelin başlığının altında çizilen, ekran için uygulamanızın kendi adıdır. description (1-300), modele doğru ekranın ne zaman bu olduğunu söyler. Route başına en fazla 8 parametre, uygulama başına 50 route. open, Rendel bir balonda beklerken, sheet kenara çekildikten sonra kendi navigasyonunuzu çalıştırır. Manifesti yeniden senkronize eder. init öncesinde güvenlidir. |
addContextProvider | void addContextProvider(String key, Future<Map<String, dynamic>> Function() provider) | Bir zaman aşımıyla birlikte her turda çağrılır. Yavaş bir sağlayıcı yalnızca kendi bağlamına mal olur, tura asla mal olmaz. |
identify | Future<void> identify({required String userId, Map<String, dynamic>? traits, String? userHmac}) | Bkz. Context. |
pair | Future<RendelPairResult> pair(String code) | Yönetim panelinin bu cihazın sohbetini iki saat boyunca salt okunur şekilde izlemesini sağlar. Yalnızca test anahtarları; bir kod bir kez, on dakika boyunca çalışır. Asla hata fırlatmaz: sonuç, gösterilecek bir cümle taşır. init öncesinde güvenlidir. Bkz. Pair a test app. |
refreshConfig | Future<void> refreshConfig() | Yayınlanan görünümü yeniden okur. SDK, uygulama yaşam döngüsüne kendisi bağlanmaz; yayınlanan bir değişikliğin yeniden başlatma olmadan geçerli olmasını istiyorsanız bunu foreground sırasında çağırın. |
events | Stream<RendelEvent> | Broadcast. |
theme / config | RendelTheme / RendelConfig | Yayınlanan herhangi bir yapılandırma sizinkinin üzerine katmanlandıktan sonraki geçerli değerler. |
strings | RendelStrings | SDK'nın ekrana çizdiği kelimeler: sizinkiler veya yanıt dili için sağlanan hazır set. |
configRevision | ValueNotifier<int> | Yayınlanan bir yapılandırma ulaştığında ve ekrandakileri değiştirdiğinde tetiklenir. |
isEnabled | bool | Kod içinde kapattığınızda veya yönetim paneli bir kill switch yayınladığında false olur. |
isInitialized | bool | — |
deviceId | String? | Bu çalıştırmanın gönderdiği kurulum başına anonim kimlik. init tamamlanmadan önce null değerindedir. Support'un talep ettiği değerdir. |
RendelConfig
Protokolün değil, sizin tercihiniz olan her şey. Her alan, aynı zamanda yönetim panelinden yayımlanan her şey için taban değerdir.
| Alan | Varsayılan | Notlar |
|---|---|---|
apiBaseUrl | https://api.rendel.ai | — |
userToken | null | Future<String?> Function(): Kendi oturum açma sisteminizden gelen, oturum açmış kişinin geçerli belirteci. Her sorudan önce istenir ve asla saklanmaz. Bkz. Signed-in user. |
requestTimeout | 30 s | Streaming olmayan çağrılar. |
streamIdleTimeout | 45 s | Bir turun tek bir sunucu olayı gerçekleşmeden ne kadar süre devam edebileceği. Sunucu her 15 saniyede bir ping gönderir ve SDK bunları sayar. |
sdkVersion | flutter/<package version> (bugün flutter/0.50.0) | client.sdk olarak gönderilir. |
languages | [] | Bu uygulamanın hangi dillerde yanıt almayı kabul ettiği; tercih sırasına göre — ['tr', 'en', 'ru']. Cihaz bunlar arasından seçim yapar; hiçbirini konuşmayan bir cihaz ilkini alır, bu nedenle sıralama bir karardır. Boş bırakıldığında seçim yönetim panelinden yayınlanan listeye bırakılır ve bu liste yoksa Rendel kendisine hangi dilde hitap edildiyse o dilde yanıt verir. Tek bir cihazın ayarı olan locale değerinden farklıdır. |
locale | cihazın kendi ayarı | BCP-47 (tr, pt-BR). Rendel'in yanıt verdiği ve confirmTemplates şablonunun eşleştirildiği dil. Başka bir dilde yazılmış bir mesaj yine bu dilde yanıtlanır. Bkz. Locales. |
assistantName | Rendel | Rendel sheet'inin üst kısmındaki ad. |
launcherLabel | Ask | Başlatıcı üzerindeki sözcük. |
suggestions | [] | Açılış istemleri. Bu uygulamanın yapabileceği şeyleri son kullanıcının sözcükleriyle belirtin. |
emptyStateTitle | null | İlk sorudan önce gösterilen başlık, kendi sözcüklerinizle. Null değeri, Rendel'in yanıt verdiği dile çevrilmiş olarak SDK'nınkini korur. Appearance üzerinden yayınlanabilir. |
emptyStateBody | null | Bu başlığın altındaki, ilk sorudan önce gösterilen satır. |
composerHint | null | Boş mesaj kutusundaki sözcükler. Null değeri, çevrilmiş olan RendelStrings.composerHint değerini kullanır. Yayınlanabilir. |
attachIcon / voiceIcon / sendIcon | plus / microphone / arrowUp | RendelAttachIcon (paperclip, image, plus, off), RendelVoiceIcon (microphone, waveform, off), RendelSendIcon (arrowUp, paperPlane, arrowRight). off değeri ilgili denetimi kaldırır. Yayınlanabilir. |
enabled | true | Koddaki acil durdurma anahtarı (kill switch). Bunu false olarak ayarlamak, yayınlanan her şeyden önceliklidir. Bir güvenlik denetimi değildir; API askıya almayı sunucu tarafında uygular. |
remoteConfig | true | False değeri, Rendel'i tam olarak bu nesnenin belirttiklerine sabitler. |
configStore | null | Başlatmalar arasında en son geçerli yayınlanmış yapılandırmanın tutulduğu yer. |
deviceIdStore | null | Başlatmalar arasında cihaz kimliğinin tutulduğu yer. configStore için olandan farklı bir anahtar kullanın — her iki taraf da tek bir dize okur ve yazar. |
onPickAttachment | yerleşik | SDK'nın Photos, Camera ve Files seçeneklerinin yerini alarak kendi seçicinizden bir RendelAttachment (baytlar, ad, medya türü) döndürür; bu durumda “+” doğrudan sizinkini açar. Null değeri yerleşik olanı kullanır. attachIcon: RendelAttachIcon.off denetimi kaldırır. |
onStopDictating | null | Kullanıcı mikrofona tekrar bastığında dikteyi sonlandırır. Bu olmadan denetime oturumun ortasında basılamaz ve tanıyıcı oturumu kendisi sonlandırır. |
onDictate | yerleşik | SDK'nın speech_to_text bileşeninin yerini alarak kendi tanıyıcınızdan tanınan konuşmayı metin olarak döndürür; birisi konuşmaya devam ederken oluşturucuyu beslemek için buna bir onPartial geri çağırma işlevi verilir. Kimse konuşmadığında null döndürün ve tanıyıcı başarısız olduğunda hata fırlatın: SDK bu ikisini farklı şekilde ifade eder ve hatayı günlüğe kaydeder. Null değeri yerleşik olanı kullanır. voiceIcon: RendelVoiceIcon.off denetimi kaldırır. |
onOpenUrl | null | Null değeri bir kartın bağlantısını uygulama içi tarayıcıda açar, böylece kullanıcı kapattığında sohbete geri döner. Bağlantıları kendiniz yönlendirmek için, örneğin kendi ürün ekranınıza yönlendirmek üzere ayarlayın. |
bubbleOffset | 104 | Rendel'in açtığı bir ekran görüntülenirken alt çubuğunuzu kapatmaması için baloncuğun alt kenardan mantıksal piksel cinsinden yüksekliği. Asla güvenli alandan daha az olamaz. |
strings | yerel ayara göre | SDK'nın ekrana yerleştirdiği, uygulamanıza veya modele ait olmayan her sözcük. Null değeri bunları locale üzerinden alır — Türkçe, Deutsch, Français, Español, العربية ve diğer yerlerde English. Bunu ayarladığınızda her sözcüğün kontrolü sizde olur. RendelStrings.forLocale('tr').copyWith(...) yalnızca belirttiğiniz sözcükleri değiştirir ve o dilin geri kalanını korur (0.44.1 sürümünden önce çoğu sözcüğü İngilizce olarak döndürüyordu). |
onLog | null | Çökme raporlayıcınıza yönlendirin. |
httpClient | null | Test bağlantı noktası: manifest senkronizasyonunu, turları ve aksiyon iletimini çevrimdışı çalıştırmak için package:http/testing.dart paketinden bir MockClient geçirin. Canlı ortamda null bırakın. |
RendelAction
Rendel'in yapmasına izin verilenler.
| Alan | Tür | Notlar |
|---|---|---|
name | String | snake_case, doğrulanır. Eskiden tek bir camelCase adı tüm manifestin reddedilmesine neden olurdu. |
description | String | Model, bunu ne zaman çağıracağına karar vermek için okur. Bir derleyici için değil, bir çalışma arkadaşınız için yazın. |
params | RendelSchema | Bir çağrı oluşmadan önce sunucu tarafında doğrulanır. |
risk | RendelRisk | read sessizce çalışır; write ve destructive sunucunun oluşturduğu bir onay kartı alır. |
handler | RendelHandler? | Future<RendelResult> Function(Map<String, dynamic> params) |
onInvoke | RendelInvocationHandler? | Future<RendelResult> Function(RendelInvocation) — sizin tarafınızdaki idempotency için aynısı artı çağrının id ve risk bilgisi. |
confirmTemplate | String? | Onay kartındaki sunucu cümlesini geçersiz kılar. |
confirmTemplates | Map<String, String>? | BCP-47 etiketine göre anahtarlanmış, dil başına aynı cümle: {'tr': '{order_id} numaralı siparişi iptal edelim mi?'}. SDK'nın gönderdiği yerel ayarla eşleştirilir: önce tam etiket, ardından dil, sonra confirmTemplate. En fazla on altı tane. |
editable | List<String> | Varsayılan const []. Onay kartında son kullanıcının onaylamadan önce değiştirebileceği parametre adları: ['quantity']. Sunucu, değiştirilen bir değeri tıpkı modelinkini denetlediği gibi denetler ve kartı yeniden çizer. Bir miktar, bir not, birkaç seçenekten biri; asla bir id veya uygulamanın hesapladığı bir tutar değil. Bkz. Kart üzerinde son kullanıcının değiştirebileceği değerler. En fazla on iki tane. |
undoable | bool | Varsayılan false. Sonradan son kullanıcının yine de geri alabileceği destructive bir aksiyon içindir (örneğin paketlenirken iptal edilebilen bir sipariş gibi): kartında “Bu işlem geri alınamaz” yazmaz. |
timeout | Duration | Varsayılan 15 sn, üst sınır 120 sn. |
sandboxResult | Map<String, dynamic>? | Bir test anahtarında handler'ı çalıştırmak yerine döndürülür. |
Rendel.registerAction(RendelAction(
name: 'add_to_cart',
description: 'Add a product to the cart',
params: RendelSchema.object({
'product_id': RendelSchema.string(),
'quantity': RendelSchema.integer(),
}),
risk: RendelRisk.write,
confirmTemplate: 'Add {quantity} to your cart?',
editable: ['quantity'],
handler: (params) async => RendelResult.ok(await cart.add(params)),
));RendelSchema
JSON Schema'yı elle yazmadan parametre biçimleri.
RendelSchema.object({
'order_id': RendelSchema.string(description: 'The order number'),
'reason': RendelSchema.enumOf(['damaged', 'wrong_item', 'other']).optional,
'quantity': RendelSchema.integer().optional,
'tags': RendelSchema.list(RendelSchema.string()),
})string, number, integer, boolean, enumOf, list, object ve yardımcı işlevlerin kapsamadığı her şey için raw. Herhangi birinde .optional (veya .orAbsent).
RendelResult
RendelResult.ok(Map<String, dynamic> data) veya RendelResult.fail(String error). Başarısızlık dizesi modele ulaşır, bu yüzden modeli harekete geçirebilecek bir ifade olarak yazın: “bu numaraya sahip sipariş yok” ifadesi “404”ten daha iyidir.
RendelRisk
read, write, destructive. Bkz. aksiyonlar ve risk seviyeleri.
RendelInvocation
id, name, params, risk. id, aynı turun yeniden denenmesinde kararlıdır; dolayısıyla işleyicinizin yaptığı her işlem için doğal bir tekilleştirme anahtarıdır.
Bir aksiyonu iki kez çalıştırmak hiç çalıştırmamaktan daha kötü olacağı durumlarda bunu onInvoke ile alın: işleyiciyi çalıştırmak ile sonucu bildirmek arasında sonlandırılan bir uygulama, sunucuyu sonuçsuz bırakır ve model aynı şeyi tekrar önerebilir.
Rendel.registerAction(RendelAction(
name: 'refund_order',
description: 'Refund an order to the original payment method',
params: RendelSchema.object({'order_id': RendelSchema.string()}),
risk: RendelRisk.destructive,
confirmTemplate: 'Refund order {order_id}? This cannot be undone.',
onInvoke: (invocation) async {
// The same id comes back if the turn is resumed after a dropped stream.
if (await refunds.alreadyProcessed(invocation.id)) {
return RendelResult.ok({'status': 'already_refunded'});
}
return RendelResult.ok(await refunds.create(
orderId: invocation.params['order_id'] as String,
idempotencyKey: invocation.id,
));
},
));RendelRouteParam
Her biri description, required ve fromActions alan RendelRouteParam.string(), .number(), .boolean(). fromActions: true ile değer, bu sohbette bir aksiyonun döndürdüğü bir değer olmalıdır; böylece tahmin edilen bir sipariş kimliği ekranı asla açamaz.
Rendel.registerRoute(
'order_detail',
title: 'My orders › Order',
description: 'One order: its items, delivery and payment.',
params: {'order_id': RendelRouteParam.string(required: true, fromActions: true)},
open: (p) => navigatorKey.currentState!.pushNamed('/orders/${p['order_id']}'),
);open, bir RendelRouteOpener olup (FutureOr<void> Function(Map<String, Object?> params)) sunucunun denetlediği parametreleri alır.
RendelLauncher
RendelLauncher({String? label}). Rendel başlatılmadığında veya devre dışı bırakıldığında hiçbir şey çizmez, böylece onu ağaçta koşulsuz olarak bırakabilirsiniz. Ayrıca, açtığı bir ekran için ileti dizisi baloncuğuna küçüldüğünde kenara çekilir; çünkü o durumda geri dönüş yolu baloncuktur: ekranda aynı anda yalnızca tek bir giriş yolu olur. Kendinize ait bir düğme de Rendel.minimised (ValueListenable<bool>) dinleyerek aynısını yapar.
RendelTheme
Bkz. Temalandırma. Dört renginize güvenmek yerine okunabilir metin ve kenarlık rollerini türeten RendelTheme.fromTokens(...) ile oluşturulur — bunu yapmayan temalanabilir bir SDK, okunaksız rozetler sunar.
RendelTheme.paper() ve RendelTheme.deep() iki yerleşik temadır; fromTokens(...) sizinkini oluşturur. RendelThemeScope.of(context) özel bir bileşen içinde temayı okur. contrastRatio ve auditContrast renklerinizi denetler.
RendelConfigStore
abstract class RendelConfigStore {
Future<String?> read();
Future<void> write(String value);
}Tek arayüz, iki kullanım: RendelConfig.configStore ve RendelConfig.deviceIdStore. Varsayılan olarak her ikisi de uygulamanın tercihlerinde (shared_preferences) tutulur. RendelMemoryConfigStore bellek içi seçenektir ve flutter test altında varsayılandır.
RendelLogRecord, RendelLogLevel, RendelLog
SDK'nın size başka bir yolla söyleyemediği şeyleri bildirdiği yer.
code | Ne zaman |
|---|---|
invalid_key | appKey, rd_pk_ (veya yeniden adlandırmadan önce oluşturulmuş bir anahtar olan nc_pk_) ile başlamadığında. |
handler_failed | Bir aksiyon handler'ı hata fırlattı. |
handler_timeout | Bir handler, timeout süresini aştı. |
context_provider_timeout | Bir context provider, 300 ms bütçesini aştı. |
context_provider_failed | Bir context provider hata fırlattı. |
manifest_sync_failed | Sunucu manifesti reddetti. Mesaj, alanı ve nedeni taşır. |
transport_failed | Bir ağ çağrısı başarısız oldu. |
config_unreadable | Yayımlanan bir config ayrıştırılamadı veya bu cihazda okunamadı. |
config_cache_write_failed | Config deposu yazma sırasında hata fırlattı. |
device_id_ephemeral | Hiçbir deviceIdStore ayarlanmadı; bu nedenle cihaz kimliği her başlatmada yenidir. Debug düzeyi, bir kez. |
device_id_store_failed | Depo hata fırlattı veya askıda kaldı. |
usage_description_missing | Info.plist, NSMicrophoneUsageDescription veya NSSpeechRecognitionUsageDescription içermediği için yerleşik mikrofon çizilmez ya da NSCameraUsageDescription içermediği için “+” Kamera sunmaz. İkisinden biri ilk kez kullanıldığında iOS uygulamayı kapatırdı. |
user_store_failed | Giriş yapmış kullanıcı saklanamadı veya geri okunamadı; bu nedenle uygulamanın yeniden başlatılması bir sonraki identify çağrısına kadar oturum kapatılmış olarak başlar. |
call_failed / mail_failed / copy_failed / calendar_failed | Bir call, email, copy veya add_to_calendar dokunması için arama ekranı, e-posta uygulaması, pano veya takvim düzenleyicisi açılamadı. |
open_url_failed / open_external_failed | Bir bağlantı uygulama içi tarayıcıda açılamadı veya sisteme aktarılamadı. |
route_open_failed | Kayıtlı bir rotanın open metodu hata fırlattı. |
dictation_failed | Tanıyıcı başarısız oldu: onDictate işleviniz hata fırlattı veya yerleşik olan başlatılamadı. |
user_token_failed | userToken hata fırlattı; tur bir belirteç olmadan devam etti. |
surface_stale | Debug: Bir surface_id için ekrandakinden daha yeni olmayan bir revizyona sahip bir blok geldi ve bırakıldı. |
paired | Debug: pair kabul edildi; yönetim paneli mesajdaki zamana kadar izler. |
pair_test_only / pair_not_found / pair_rate_limited / pair_failed | pair çağrısının neden eşleşmediği: canlı bir anahtar; yanlış, kullanılmış veya süresi dolmuş bir kod; bir dakika içinde çok fazla deneme; diğer her durum. Web SDK aynı kodları kullanır. |
code kararlıdır ve üzerinde switch çalıştırmak güvenlidir; message insanlar içindir ve yeniden ifade edilebilir.
RendelEvent
opened, closed, messageSent, actionExecuted. Kendi analitiğiniz için.
Kendi bileşeninizi render etme
ComponentRegistry.register(String type, ComponentBuilder builder), kataloğun yerine sizin bir widget'ınızı koyar. ComponentBuilder, Widget Function(BuildContext context, WireBlock block, RendelDispatcher dispatch) şeklindedir. RendelActionButton, RendelChip, RendelControlShell, RendelOverline, RendelPressable, RendelPulse ve RendelSwap, bileşeninizin Material gibi değil, yerleşik bir bileşen gibi basılması, sarılması ve nefes alması için dışa aktarılmıştır.
RendelDispatcher
Bileşeninizin nasıl geri bildirim verdiği. SDK, oluşturucunuza bir tane iletir; bunu asla kendiniz yapılandırmazsınız. Null olan bir üye, bu derlemenin bunu yapamayacağı anlamına gelir; bu yüzden o kısmı içerik olarak çizin.
| Üye | İmza | Notlar |
|---|---|---|
onAction | Future<bool> Function(UIAction) | Bir dokunmayı tetikler; dokunma bırakıldığında false olarak sonuçlanır. |
canHandle | bool Function(UIAction) | Bir dokunma yüzeyi çizmeden önce sorun; false değeri bunu içerik olarak çizmeniz gerektiği anlamına gelir. |
onSubmitForm | Future<RendelSubmitOutcome> Function(String formId, Map<String, Object> values) | Değerler String, num, bool veya List<String> türündedir. |
onSelect | Future<bool> Function(WireBlock, String id, String shown)? | selection olarak gönderilen bir variant_picker veya datetime_slots seçimi. Hiçbir şeyin seçilemediği durumlarda null. |
onChoose | Future<bool> Function(WireBlock, List<String> ids, String shown, {String? otherText, Duration lit})? | Bir choice yanıtı: kimlikler, otherText veya atlamak için hiçbir şey. |
onRate | Future<bool> Function(WireBlock, int score, {String? comment})? | Tur olmadan /v1/ratings uç noktasına gönderilen bir rating puanı ve isteğe bağlı yorum. |
onPickFile | Future<RendelAttachment?> Function(RendelAttachSource)? | Bir form upload alanının seçicisi. Kullanıcı vazgeçtiğinde null olarak sonuçlanır. |
fileSources | List<RendelAttachSource> | onPickFile işlevinin nereden seçim yapabileceği. |
onUpload | Future<String> Function(RendelAttachment)? | Bir yükleme kimliği ile sonuçlanan yükleme. toString() çıktısı sunucunun cümlesi olan bir istisna fırlatır. |
routeTitle | String? Function(String route)? | screens için kayıtlı bir rotanın uygulamanızdaki başlığı. |
UIAction
Kapalı birleşim (sealed union): ReplyAction, OpenUrlAction, NavigateAction, CallAction, EmailAction, CopyAction, AddToCalendarAction, ConfirmAction, CancelAction, AppActionRef. Yeni türler ara sürümlerde eklenir; bu nedenle üzerindeki her switch ifadesine bir joker (_ =>) durumu ekleyin.
0.32.0 öncesinden kalan adlar
Her NC*, NeonCopilot ve Copilot* adı, Rendel* ikamesinin desteği sonlandırılmış (deprecated) bir typedef'idir ve her biri 1.0 sürümünde kaldırılacaktır.
Neden sadece bir render katmanı değil
Generative UI protokolünün size sağladıkları, sağlamadıkları ve asıl işin nerede olduğu.
Web SDK
Rendel'in bir web sitesindeki davranışı — etiket, sürüm sabitleme, giriş yapmış ziyaretçiler, izin verilen alan adları, karanlık mod, CSP, aksiyonlar, ekranlar ve olaylar.