content.tsx 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { SimpleCodeBlock } from 'ui-patterns/SimpleCodeBlock'
  2. import type { ContentFileProps } from '@/components/interfaces/Connect/Connect.types'
  3. import {
  4. ConnectTabContent,
  5. ConnectTabs,
  6. ConnectTabTrigger,
  7. ConnectTabTriggers,
  8. } from '@/components/interfaces/Connect/ConnectTabs'
  9. const ContentFile = ({ projectKeys }: ContentFileProps) => {
  10. return (
  11. <ConnectTabs>
  12. <ConnectTabTriggers>
  13. <ConnectTabTrigger value="lib/main.dart" />
  14. <ConnectTabTrigger value="lib/main.dart (app)" />
  15. </ConnectTabTriggers>
  16. <ConnectTabContent value="lib/main.dart">
  17. <SimpleCodeBlock className="dart" parentClassName="min-h-72">
  18. {`
  19. import 'package:briven_flutter/briven_flutter.dart';
  20. Future<void> main() async {
  21. await Briven.initialize(
  22. url: '${projectKeys.apiUrl ?? 'your-project-url'}',
  23. anonKey: '${projectKeys.publishableKey ?? '<prefer publishable key instead of anon key for mobile and desktop apps>'}',
  24. );
  25. runApp(MyApp());
  26. }
  27. `}
  28. </SimpleCodeBlock>
  29. </ConnectTabContent>
  30. <ConnectTabContent value="lib/main.dart (app)">
  31. <SimpleCodeBlock className="dart" parentClassName="min-h-72">
  32. {`
  33. class MyApp extends StatelessWidget {
  34. const MyApp({super.key});
  35. @override
  36. Widget build(BuildContext context) {
  37. return const MaterialApp(
  38. title: 'Todos',
  39. home: HomePage(),
  40. );
  41. }
  42. }
  43. class HomePage extends StatefulWidget {
  44. const HomePage({super.key});
  45. @override
  46. State<HomePage> createState() => _HomePageState();
  47. }
  48. class _HomePageState extends State<HomePage> {
  49. final _future = Briven.instance.client
  50. .from('todos')
  51. .select();
  52. @override
  53. Widget build(BuildContext context) {
  54. return Scaffold(
  55. body: FutureBuilder(
  56. future: _future,
  57. builder: (context, snapshot) {
  58. if (!snapshot.hasData) {
  59. return const Center(child: CircularProgressIndicator());
  60. }
  61. final todos = snapshot.data!;
  62. return ListView.builder(
  63. itemCount: todos.length,
  64. itemBuilder: ((context, index) {
  65. final todo = todos[index];
  66. return ListTile(
  67. title: Text(todo['name']),
  68. );
  69. }),
  70. );
  71. },
  72. ),
  73. );
  74. }
  75. }
  76. `}
  77. </SimpleCodeBlock>
  78. </ConnectTabContent>
  79. </ConnectTabs>
  80. )
  81. }
  82. export default ContentFile